我有一個很奇怪的問題。基本上我創建了一個名爲TreeNode的類,它表示樹中的一個節點。然後通過將所有節點添加到List來創建樹。c#對象從列表中刪除時丟失參考
class TreeNode
{
private TreeNode parent, lChild, rChild;
private int key, val;
public int Key
{
get { return key; }
set { key = value; }
}
public int Val
{
get { return val; }
set { val = value; }
}
public TreeNode Parent
{
get { return parent; }
set { parent = value; }
}
public TreeNode LChild
{
get { return lChild; }
}
public TreeNode RChild
{
get { return rChild; }
}
public TreeNode(int k, int v)
{
key = k;
val = v;
}
public void SetChild(TreeNode leftChild, TreeNode rightChild)
{
this.lChild = leftChild;
this.rChild = rightChild;
}
public bool isLeaf()
{
if (this.lChild == null && this.rChild == null)
{
return true;
} else
{
return false;
}
}
public bool isParent()
{
if (this.parent == null)
{
return true;
}
else
{
return false;
}
}
public void SetParent(TreeNode Parent)
{
this.parent = Parent;
}
}
所以,如果我把一個斷點剛剛創建樹後懸停在Visual Studio中的列表,我可以看到樹的結構 - 與所有引用從根完美的工作下來的葉子。
然而,如果我做到以下幾點:
TreeNode test = newTree[newTree.Count - 1];
請注意:
private List<TreeNode> newTree = new List<TreeNode>();
返回根節點 - 然後再次將鼠標懸停在我可以做下來一個水平(即左子或右孩子),但這些孩子之後沒有任何關於他們的孩子的參考。
我想知道如果由於測試節點不是列表中的一部分而導致內存中的引用丟失到列表中的其他節點?
任何幫助將不勝感激。
感謝 湯姆
這也是我的猜測。 – 2010-12-08 00:25:14