2016-06-08 67 views
2

我認爲List包含對象的引用,所以我想我可以創建一個名爲「Node」的自定義類的對象,將它添加到列表中,然後刪除對象通過賦值爲空。 (我知道我可以使用從列表中刪除,但這不是我想要做的。)因此,當我再次打印列表時,它仍然打印對象「testNode」的名稱,即使我將它分配給null。我能做些什麼來添加對列表的引用?如何添加對列表的引用

Node testNode = new Node("Name", id); 
List<Node> listNodes = new List<Node>(); 
listNodes.Add(testNode); 

for (int i = 0; i < listNodes.Count; i++) 
    listNodes[i].ToString(); 

testNode = null; 

for (int i = 0; i < listNodes.Count; i++) 
    listNodes[i].ToString(); 
+2

要回答這個問題的稱號,你已經是。 testNode也**是一個引用,所以你剛剛將testNode **引用**設置爲null。實際的對象仍然存在,它被另一個引用(你的列表)指向,所以它保持不變 – Liam

回答

4

您添加到列表中什麼是Node實例的引用。不是你的變量的參考。

隨着

testNode = null; 

你只能分配null你的變量。這對於引用的實際實例testNode沒有任何影響。並且它不會更改列表或從列表中刪除參考

所以要的唯一方法刪除從列表中引用是 - 好 - Remove

listNodes.Remove(testNode); 
+0

謝謝!我通過更改Node的成員變量來實現我想要做的事情。所以當我寫了'testNode.type = null;'它確實在列表的第二個打印中發生了變化。 – Southgarden116

相關問題