Ich benutze Ref, so dass es die Wurzel des binären Suchbaums ändert Ich versuche zu erstellen, aber es funktioniert nicht so, wie ich es vorhabe.ref funktioniert nicht - ändert nicht die Eigenschaft
public BinaryNode<T> Root { get; set; }
public BinaryTree() : base()
{
Root = null;
public T Insert(ref BinaryNode<T> root, T val)
{
// Insert here
if (root == null)
{
BinaryNode<T> newNode = new BinaryNode<T>(val);
root = newNode;
Size++;
return val;
}
if (val.CompareTo(root.Data) < 0)
{
BinaryNode<T> left = root.LeftChild;
return Insert(ref left, val);
}
else if (val.CompareTo(root.Data) > 0)
{
BinaryNode<T> right = root.RightChild;
return Insert(ref right, val);
}
return val;
}
public override T Insert(T val)
{
BinaryNode<T> root = Root;
return Insert(ref root, val);
}
Ich habe erwartet, dass, wenn ich root = newNode
, dass der Start während des ersten Einsatzes zum Beispiel ändern würde. Dies ist jedoch nicht der Fall. Root bleibt auch nachher null. Ich vermute, dass dies eher etwas mit Eigenschaften zu tun hat und wie es mit ref anstatt ref selbst interagiert?
einfach einen Debug-Punkt setzen und prüfen, warum es nicht wie erwartet funktioniert, hat es mit Art und Weise Referenztypen zu arbeiten –
eine Modifikation Versuchen sie, machen Root-Eigenschaft nicht null, da null nicht definiert ist ce –