Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向列表添加引用_C#_List_Reference - Fatal编程技术网

C# 如何向列表添加引用

C# 如何向列表添加引用,c#,list,reference,C#,List,Reference,我认为列表包含对象的引用,因此我认为可以创建一个名为“Node”的自定义类的对象,将其添加到列表中,然后通过为其分配null来删除该对象。(我知道我可以使用remove from the list,但这不是我想要做的。)因此,当我再次打印列表时,它仍然使用对象“testNode”的名称打印,即使我为它分配了null。如何向列表添加引用 Node testNode = new Node("Name", id); List<Node> listNodes = new List<No

我认为列表包含对象的引用,因此我认为可以创建一个名为“Node”的自定义类的对象,将其添加到列表中,然后通过为其分配null来删除该对象。(我知道我可以使用remove from the list,但这不是我想要做的。)因此,当我再次打印列表时,它仍然使用对象“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();
Node testNode=新节点(“名称”,id);
List listNodes=新列表();
添加(testNode);
for(int i=0;i
添加到列表中的是对
节点的实例的引用。不是对变量的引用

只能将
null
赋值给变量。这对实际引用的实例
testNode
没有任何影响。并且它不会更改列表或从列表中删除引用

因此,从列表中删除引用的唯一方法是-well-
remove

listNodes.Remove(testNode);

要回答标题中的问题,您已经做到了。testNode也是一个引用,因此您只需将testNode引用设置为null。实际的对象仍然存在,并且它被其他引用(您的列表)指向,因此它保持不变谢谢!通过更改节点的成员变量,我实现了我想要做的事情。所以当我写
testNode.type=null在列表的第二次打印中它确实发生了变化。
listNodes.Remove(testNode);