读书人

关于引述传递的疑惑

发布时间: 2013-01-08 14:02:14 作者: rapoo

关于引用传递的疑惑


class Program
{
private static void Main(string[] args)
{
var obj = new RefObject();
obj.Flag = "csharp";
var newobj = obj;
obj = null;
Console.WriteLine(newobj.Flag);
Console.ReadLine();
}
}

public class RefObject
{
public string Flag { get; set; }
}


代码如上,当“obj = null”后,为什么newobj依然可以使用,我以前一直认为引用传递会导致这样的引用链全部为null了。
[解决办法]
null给引用对象赋值,引用对象将从指向原地址改为指向空地址,这对原地址内的数据没有任何影响啊。
[解决办法]
在c#中所有的赋值,真的是赋值。。。

var newobj = obj;

这句话真正该理解成 将obj的栈中的数据拷贝一份到newobj中。

对于引用类型所赋的值实际上是栈中保存的一个内存地址
对于值类型所赋的值,是栈中保存的实际值

读书人网 >C#

热点推荐