簡體   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