Nel codice seguente sto tentando di impostare il nodo su null nel metodo di prova. Quando lo faccio, il nodo diventa Nullo solo nell'ambito del metodo, ma "genitore" non diventa nullo. La mia comprensione è che gli oggetti sono passati ai metodi come riferimento e possono essere manipolati direttamente all'interno del metodo. Penso che ci sia qualcosa di sbagliato nella mia comprensione concettuale. Puoi spiegare perché l'assegnazione del nodo a null non assegna il padre a null.Impossibile impostare un oggetto su null all'interno di un metodo
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;
}
Si sta passando * nodo * in base al valore (ovvero passando una copia del suo * handle *), e occorre passarlo per riferimento (cioè come originale * handle *). Link: https://msdn.microsoft.com/en-us/library/8f1hz171.aspx e https://msdn.microsoft.com/en-us/library/14akc2c7.aspx –
Grazie per la risposta.In tal caso, come cambiano i valori dei campi? Esempio quando assegno node.key = 1111, parent.key cambia anche in 1111. – Karthikkumar
Nota che il metodo preferito per restituire valori da un metodo è come valore di ritorno di una funzione o di una proprietà, non come un riferimento * o * un * parametro come si sta tentando qui. Certo, ci sono sempre delle eccezioni. –