[英]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.