public class TreeNode
{
public TreeNode Left;
public TreeNode Right;
public int Data { get; set; }
public TreeNode(int data)
{
Left = null;
Right = null;
Data = data;
}
}
public class BinarySearchTree
{
private TreeNode _root;
public BinarySearchTree()
{
_root = null;
}
public void Insert(int data)
{
TreeNode tempNode = null;
Insert(_root, tempNode);
}
private void Insert(TreeNode treeNode, TreeNode newNode)
{
newNode = new TreeNode(3);
treeNode = new TreeNode(4);
}
在這個例子中,公共無效Insert(int data)
方法基本上只是調用私有方法,我把一個破發點在public void Insert(int data)
方法結束。C#引用類型的問題
和通知_root
仍爲空,而tempNode
爲4.我不明白爲什麼?任何人都可以解釋嗎?
代碼是否編譯? Insert(int)中定義newNode在哪裏? – manojlds
您正在通過價值參考。如果你做了treeNode.DoWork()它會作用於被引用的對象,但是如果你重新分配了treeNode,你將重新分配引用本身(這是通過值傳遞的)。 – Michael
框架設計指南(Krzysztof Cwalina和Brad Abrams撰寫的一本書)建議避免ref和out參數。使用'out'和'ref'幾乎不存在很好的理由。 – 2012-12-06 17:48:18