考虑以下代码:public class Program{ private static void Main(string[] args) { var person1 = new Person { Name = "Test" }; Console.WriteLine(person1.Name); Person person2 = person1; person2.Name = "Shahrooz"; Console.WriteLine(person1.Name); //Output: Shahrooz person2 = null; Console.WriteLine(person1.Name); //Output: Shahrooz }}public class Person{ public string Name { get; set; }}显然,当分配person1给person2且Name属性person2更改时,Nameof person1也将更改。person1并person2具有相同的参考。为什么在时person2 = null,person1变量也不会为null?
3 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
这两个person和person2是引用,同一个对象。但是这些是不同的参考。所以当你跑步时
person2 = null;
您仅更改reference person2,而reference person和相应的对象保持不变。
我猜想最好的解释方法是简化图示。这是以前 的情况person2 = null
如您所见,在第二张图片上person2没有引用任何内容(或者null严格来说,因为没有引用和引用null是不同的条件,请参见Rune FS的注释),同时person仍引用现有对象。
宝慕林4294392
TA贡献2021条经验 获得超8个赞
您已更改person2
为引用null
,但person1
此处未引用。
我的意思是,如果我们看一下person2
,并person1
指派那么这两个引用相同的对象之前。然后,您指定person2 = null
,因此第2个人现在引用的是其他类型。它没有删除person2
引用的对象。
- 3 回答
- 0 关注
- 558 浏览
添加回答
举报
0/150
提交
取消