Quali processi e conseguenze si verificano quando un oggetto viene passato a una funzione o metodo in programmazione?
sobes.tech AI
Risposta dell'AI
In C#, passando un oggetto a una funzione o metodo si passa una copia del riferimento a quell'oggetto, non l'oggetto stesso. Ciò significa che all’interno del metodo è possibile modificare lo stato dell’oggetto (i suoi campi e proprietà), e queste modifiche saranno visibili al di fuori del metodo, poiché il riferimento punta allo stesso oggetto in memoria.
Tuttavia, se all’interno del metodo si assegna al parametro un nuovo riferimento (ad esempio, param = new Object()), questo non influirà sul riferimento originale fuori dal metodo, poiché la copia del riferimento viene modificata localmente.
Esempio:
class Person {
public string Name;
}
void ChangeName(Person p) {
p.Name = "Иван"; // cambierà il nome dell’oggetto
p = new Person(); // cambierà localmente il riferimento, ma non influirà fuori dal metodo
p.Name = "Пётр";
}
Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // Stamperà "Иван"
Pertanto, passare un oggetto equivale a passare il riferimento per valore. Le modifiche allo stato dell’oggetto vengono mantenute, ma la riassegnazione del riferimento no.