Junior — Middle
Koji procesi i posledice nastaju kada se objekat prenese u funkciju ili metodu u programiranju?
sobes.tech АИ
Одговор од АИ
U C#-u, prilikom prosleđivanja objekta funkciji ili metodi, prosleđuje se kopija reference na taj objekat, a ne sam objekat. To znači da unutar metode možete menjati stanje objekta (njegova polja i svojstva), i te promene će biti vidljive izvan metode, jer referenca ukazuje na isti objekat u memoriji.
Međutim, ako unutar metode dodelite parametru novu referencu (npr., param = new Object()), to neće uticati na originalnu referencu izvan metode, jer se kopija reference menja lokalno.
Primer:
class Person {
public string Name;
}
void ChangeName(Person p) {
p.Name = "Иван"; // promeniće ime objekta
p = new Person(); // lokalno će promeniti referencu, ali izvan metode to neće imati efekta
p.Name = "Пётр";
}
Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // Ispisaće "Иван"
Dakle, prosleđivanje objekta je prosleđivanje reference po vrednosti. Promene stanja objekta ostaju, ali preusmeravanje reference — ne.