首页 > 代码库 > C#中将一个引用赋值null的作用

C#中将一个引用赋值null的作用

有类A,以及A类型的变量a和b。初始化a之后,将a赋给b。之后将a赋为null。之后b还是可以使用。

思维误区:本来以为a=null之后,b也应该等于null。

实际测试效果如下

    class Program    {        static void Main(string[] args)        {            try            {                A a = new A() { data = http://www.mamicode.com/"Hello World" };                A b = a;                if (b.Equals(a))                {                    Console.WriteLine("a和b是同一个对象");                }                else                 {                    Console.WriteLine("a和b不是同一个对象");                }                a.data = "Good Morning";                a = null;                //b = null;                             GC.Collect();                Console.WriteLine(b.data);            }            catch (Exception ex)            {                Console.WriteLine(ex.Message);            }            Console.ReadKey();        }    }    class A    {       internal string data;    }

 

 

最后在stackoverflow上找到了答案,原来对一个引用赋null,仅仅是把指向去掉了。其他变量还是可以指向之前的内容

http://stackoverflow.com/questions/8069396/setting-a-type-reference-type-to-null-doesnt-affect-copied-type

技术分享

C#中将一个引用赋值null的作用