Junior — Middle
Programlamada bir nesne bir fonksiyon veya metoda geçirildiğinde hangi süreçler ve sonuçlar ortaya çıkar?
sobes.tech yapay zeka
AI'dan gelen yanıt
C#'ta, bir nesneyi bir fonksiyon veya metoda geçirirken, bu nesnenin referansının bir kopyası geçirilir, nesne kendisi değil. Bu, metodun içinde nesnenin durumu (alanları ve özellikleri) değiştirilebileceği ve bu değişikliklerin metodun dışında da görüleceği anlamına gelir, çünkü referans aynı nesneye işaret eder.
Ancak, metodun içinde parametreye yeni bir referans atarsanız (örneğin, param = new Object()), bu, metodun dışında orijinal referansı etkilemez, çünkü referansın kopyası yerel olarak değiştirilir.
Örnek:
class Person {
public string Name;
}
void ChangeName(Person p) {
p.Name = "Иван"; // nesnenin adını değiştirir
p = new Person(); // yerel olarak referansı değiştirir, ama metodun dışında etkili olmaz
p.Name = "Пётр";
}
Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // "Иван" yazdırır
Dolayısıyla, nesne geçişi, referansın değeriyle yapılır. Nesnenin durumu üzerindeki değişiklikler kalıcıdır, ancak referansın yeniden atanması etkili değildir.