繁体   English   中英

C#对象突然为空

[英]C# Object suddenly null

我为此进行了漫长而艰苦的搜索,而现在我已经走到了尽头。 除了这个项目,我还遇到了其他问题,但最终我还是放弃了其他项目。 我有一个代码(C#),基本上是我想要做的霍夫曼树的代码。 有一点我做到了(“ nodeList”是List(Node)):

Node node = new Node(nodeList[0], nodeList[1]);
nodeList.Add(node); // Adds a new node which includes two subnodes.

// Remove nodes from list (as they are now included in another node)
nodeList.RemoveAt(0);
nodeList.RemoveAt(1);

这里使用的构造函数是:

// Constructor that takes nodes
public Node(Node left, Node right)
{
   leftNode = new Node(left);
   rightNode = new Node(right);
}

// Constructor that only takes 1 single node
public Node(Node copy)
{
   rightNode = copy.rightNode;
   leftNode = copy.leftNode;
   unencodedBits = copy.unencodedBits;
   encodingValue = copy.encodingValue;
   positions = copy.positions;
}

我做了第二个构造函数,希望它能解决我的问题(认为从列表中删除该节点可能会使它无效。)(Node类中的所有值都在第二个构造函数的右侧。)

问题:执行完第二个“ RemoveAt”后,节点将不再包含两个节点。 而且我不明白为什么。 我必须采取什么措施来防止这种情况发生以及为什么发生(这样我以后才能理解类似的情况)?

我可能忘记了一些重要的信息。 如果我这样做了,请告诉我。 并感谢您的协助。

您的nodeList对象是数组还是List? 如果它是一个列表,则nodeList.RemoveAt(0)导致当前定位的节点和索引1现在位于索引0。因此,您需要调用

nodeList.RemoveAt(0); 
nodeList.RemoveAt(0); 

代替

nodeList.RemoveAt(0); 
nodeList.RemoveAt(1);

看到这里: http : //msdn.microsoft.com/zh-cn/library/5cw9x18z(v=vs.110).aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM