关于引述传递的疑惑
关于引用传递的疑惑class Program{private static void Main(string[] args){var obj new RefObject()o
关于引用传递的疑惑
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中。
对于引用类型所赋的值实际上是栈中保存的一个内存地址
对于值类型所赋的值,是栈中保存的实际值