2016-06-08 66 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

相关问题