我已經搜索了這麼久,很難爲此,現在我在公路的盡頭。我的這個問題比這個項目更多,但我最終取消了其他項目。我有一個代碼(C#),這基本上是我試圖做霍夫曼樹。有一次,我這樣做(「節點列表」的列表(節點)):C#對象突然無效
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;
}
我做的第二個構造爲希望它會修復我的問題(認爲從列表中刪除節點可能會消除它)(我的節點類中的所有值都在第二個構造函數的右側)。
問題:執行第二個「RemoveAt」節點將不再包含這兩個節點。我不明白爲什麼。我需要做些什麼來防止這種情況發生,爲什麼會發生(所以我可以在將來了解類似的情況)?
我大概忘了包含一些重要信息;如果我有,請告訴我。並感謝您的任何幫助。
無論何時您對代碼的作用有疑問,它有助於設置斷點,然後逐步執行代碼。你將能夠看到每個方法調用正在做什麼。 – mason
我知道每種方法正在調用什麼。我寫了這些方法(RemoveAt除外,但我沒有辦法檢查它是做什麼的。)我只是想知道爲什麼它會突然刪除我的對象(無論如何,不是所有的對象)。 – Morten242
You _do_ have a查看RemoveAt的功能。就像我說的那樣,設置一個斷點並在您逐步瀏覽時監視您的nodeList對象。你會看到RemoveAt對它的影響。 – mason