【问题标题】:What are c# return characteristics?c#返回特征是什么?
【发布时间】:2016-10-29 06:47:06
【问题描述】:

如果是Object,返回一个地址给引用的返回对象?如果是字面量,则将复制的值返回给返回对象?

例子:

public class serv{

Object add;
int literal;

public Object AddVal{
 get{return add}; set{add = value};
}

public int Literal{
 get{return literal}; set{literal = value};
}

}

如果我从“AddVal”检索项目,它会是返回的参考地址吗? 如果我从 Literal 中检索项目,它会是返回的文字的副本吗?

感谢您的宝贵时间。

【问题讨论】:

  • return 返回值的副本。请注意,对于引用类型,value 不是对象本身,而是对对象的引用或null 引用。
  • 你需要知道什么?只是想知道,因为 c# 从许多角度返回 var thing = serv.AddVal 只是将 getter 的返回值分配给事物。从本质上讲,它在 return 语句中的事实并没有使它与使用引用/值的其他任何地方得到任何不同的处理。所以我想知道为什么您对返回语句特别感兴趣,希望我们可以更好地解决您的问题。
  • 其实你们回答了我的问题。谢谢。

标签: c#


【解决方案1】:

如果你问我认为你在问什么,那么是的。

public static void Main()
{
    var i1 = 1;
    var i2 = i1;

    var o1 = new Object();
    var o2 = o1;

    Console.WriteLine(Object.ReferenceEquals(i1, i2));
    Console.WriteLine(Object.ReferenceEquals(o1, o2));
}

演示here.

【讨论】:

  • 也许你应该更明确地说明你认为他们在问什么,以防你认为他们在问什么?对一个不成文的(而且你自己承认不确定)问题说“是”并没有多大帮助......
  • 如果你写Object.ReferenceEquals(i1, i1),那么你也会得到false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 2018-06-06
  • 1970-01-01
  • 2010-11-10
  • 2018-10-25
  • 2023-02-22
相关资源
最近更新 更多