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