我對c#很陌生,我試圖理解一些非常基本的東西。鏈表和紅/黑樹在C#中 - 參考問題?
我想實現一個RBTree和鏈表,所以我創建:
public class RBTreeNode
{
// PROPERTIES
public RBTreeNode left;
public RBTreeNode right;
public RBTreeNode parent;
public String Color;
public Int Key;
}
List<RBTreeNode> deleteList = new List<RBTreeNode>();
在我的程序運行我在樹的遍歷,採取一些節點(根據值),以及添加他們刪除列表。
我不能設置我的想法是,如果例如我有RBTreeNode X,並且我做 X.left = null。我想要發生的事情是將X的左子節點(不影響X.left RBTreeNode,但我認爲這裏會發生的事情是,X.left將變爲null,但X.left RBTreeNode對象也將變爲null。不是我想要的(如果它被複制到deleteList,它將變爲空,這是錯誤的)
我想能夠做與C++使用指針做同樣的事情 在c + +我可能會這樣做:
public class RBTreeNode
{
// PROPERTIES
public RBTreeNode* left;
public RBTreeNode* right;
public RBTreeNode* parent;
public std::string Color;
public int Key;
}
例如:
RBTreeNode* tenp = X->left;
X->left = null; //(i think in c# it will turn temp here to null to - of course without pointers)
temp->right = &X;
任何提示/解釋?