Junior — Middle
Dasturlashda ob'ekt funksiyaga yoki metodga o'tkazilganda qanday jarayonlar va natijalar yuzaga keladi?
sobes.tech AI
AIdan javob
C# da, ob'ektni funksiya yoki metodga uzatishda, bu ob'ektga havolaning nusxasi uzatiladi, ob'ektning o'zi emas. Bu shuni anglatadiki, metod ichida ob'ektning holatini (uning maydonlari va xususiyatlari) o'zgartirish mumkin va bu o'zgarishlar metod tashqarisida ham ko'rinadi, chunki havola xotirada aynan shu ob'ektni ko'rsatadi.
Ammo, agar metod ichida parametrga yangi havola tayinlasangiz (masalan, param = new Object()), bu metod tashqarisidagi asl havoni ta'sir qilmaydi, chunki havolaning nusxasi lokal ravishda o'zgartiriladi.
Misol:
class Person {
public string Name;
}
void ChangeName(Person p) {
p.Name = "Иван"; // ob'ekt nomini o'zgartiradi
p = new Person(); // lokal ravishda havolani o'zgartiradi, lekin tashqarida ta'sir qilmaydi
p.Name = "Пётр";
}
Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // "Иван" chiqaradi
Shunday qilib, ob'ektni uzatish - bu havolani qiymat bilan uzatishdir. Ob'ekt holatidagi o'zgarishlar saqlanadi, lekin havolani qayta tayinlash ta'sir qilmaydi.