首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于引述传递的疑惑

2013-01-08 
关于引用传递的疑惑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中。

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

热点排行