Junior — Middle
Ҳангоми интиқоли объект ба функсия ё метод дар барномасозӣ, кадом равандҳо ва оқибатҳо ба вуҷуд меоянд?
sobes.tech AI
Ҷавоб аз AI
Дар C# вақте ки объект ба функсия ё метод гузаронида мешавад, нусхаи ишора ба он объект гузаронида мешавад, на худи объект. Ин маъно дорад, ки дар дохили метод метавон ҳолати объектро (майдонҳо ва хусусиятҳояш) тағир дод, ва ин тағирот дар беруни метод низ дида мешавад, зеро ишора ба ҳамон объект дар хотира ишора мекунад.
Аммо, агар дар дохили метод ба параметр ишораи нав гузорем (масалан, param = new Object()), ин ба ишораи аслӣ дар берун аз метод таъсир намерасонад, зеро нусхаи ишора маҳаллии тағиротро дорад.
Масалан:
class Person {
public string Name;
}
void ChangeName(Person p) {
p.Name = "Иван"; // номи объектро тағир медиҳад
p = new Person(); // маҳаллии тағирот, аммо берун таъсир намерасонад
p.Name = "Пётр";
}
Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // "Иван" мебарояд
Аз ин рӯ, гузаронидани объект — ин гузаронидани ишора бо арзиш аст. Тағирот дар ҳолати объект боқӣ мемонанд, аммо тағир додани ишора — не.