考慮以下代碼: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 關注
- 614 瀏覽
添加回答
舉報
0/150
提交
取消