有类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 = "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
时间: 2024-11-07 15:33:44