Milyen folyamatok és következmények lépnek fel, amikor egy objektumot átadunk egy függvénynek vagy metódusnak a programozásban?
sobes.tech MI
Válasz az MI-től
C#-ban, amikor egy objektumot átadunk egy függvénynek vagy metódusnak, akkor ennek az objektumnak a referencia másolatát adjuk át, nem magát az objektumot. Ez azt jelenti, hogy a metóduson belül módosíthatjuk az objektum állapotát (mezőit és tulajdonságait), és ezek a változások láthatóak lesznek a metóduson kívül is, mivel a referencia ugyanarra az objektumra mutat a memóriában.
Azonban, ha a metóduson belül a paraméternek új referenciát rendelünk (például, param = new Object()), akkor ez nem befolyásolja az eredeti referenciát a metóduson kívül, mivel a referencia másolatát helyileg módosítjuk.
Példa:
class Person {
public string Name;
}
void ChangeName(Person p) {
p.Name = "Иван"; // megváltoztatja az objektum nevét
p = new Person(); // helyileg megváltoztatja a referenciát, de kívül nem hat
p.Name = "Пётр";
}
Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // "Иван" lesz a kimenet
Tehát, egy objektum átadása a referencia érték szerinti átadása. Az objektum állapotának változásai megmaradnak, de a referencia újra hozzárendelése nem.