Sobes.tech
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); // "Иван" чыгат

Ошентип, объектти өткөрүү — бул шилтеменин баалуу түрдө өткөрүлүшү. Объекттин абалындагы өзгөртүүлөр сакталат, бирок шилтемени кайра белгилөө — жок.