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. Я не понимаю, почему? Может ли кто-нибудь объяснить, пожалуйста?
Содержит ли код? Где newNode определяется в Insert (int)? – manojlds
Вы передаете ссылку по значению. Если вы выполнили treeNode.DoWork(), он будет действовать на объект, на который ссылается, но если вы переназначите treeNode, вы переназначаете саму ссылку (которая была передана по значению). – Michael
Руководства по разработке рамок (книга Кшиштофа Квалины и Брэда Абрамса) рекомендуют избегать как параметров ref, так и out. Очень редко есть причина использовать 'out' и' ref'. –