Im folgenden Code versuche ich, Knoten in der Testmethode auf Null zu setzen. Wenn ich das tue, wird der Knoten Null nur innerhalb des Bereichs der Methode, aber "Eltern" wird nicht null. Mein Verständnis war, dass Objekte Methoden als Referenz übergeben werden und direkt in der Methode manipuliert werden können. Ich denke, dass etwas falsch in meinem konzeptionellen Verständnis ist. Können Sie erklären, warum das Zuordnen des Knotens zu null dem übergeordneten Element nicht den Wert null zuweist.Kann ein Objekt innerhalb einer Methode nicht auf Null setzen
class Program
{
static void Main(string[] args)
{
Node parent = new Node();
parent.key = 50;
parent.left = new Node();
Test.test(parent);
}
}
class Test
{
public static void test(Node node)
{
node.key = 1111;
node = null;
}
}
class Node
{
public object key { get; set; }
public Node left = null;
public Node right = null;
}
Sie übergeben * node * nach Wert (dh übergeben eine Kopie von es ist * handle *) und müssen es als Referenz übergeben (dh als das Original * handle *). Link: https://msdn.microsoft.com/en-us/library/8f1hz171.aspx und https://msdn.microsoft.com/en-us/library/14akc2c7.aspx –
Vielen Dank für Ihre Antwort.Wie ändern sich die Feldwerte in diesem Fall? Beispiel: Wenn ich node.key = 1111 zuweise, ändert sich parent.key ebenfalls in 1111. – Karthikkumar
Beachten Sie, dass das bevorzugte Mittel zum Zurückgeben von Werten aus einer Methode der Rückgabewert einer Funktion oder Eigenschaft ist, nicht als ref * oder * out *. Parameter wie Sie hier versuchen. Natürlich gibt es immer Ausnahmen. –