Sobes.tech
Junior — Middle

Proqramlaşdırmada obyektin funksiya və ya metoduna ötürülməsi zamanı hansı proseslər və nəticələr baş verir?

sobes.tech Süni İntellekt

AI-dan cavab

C# dilində, bir obyekti funksiya və ya metoda ötürərkən, bu obyektdən referansın nüsxəsi ötürülür, obyekt özü deyil. Bu, metod daxilində obyektin vəziyyətini (sahələrini və xüsusiyyətlərini) dəyişdirmək mümkün olduğu və bu dəyişikliklərin metod xaricində görünəcəyi deməkdir, çünki referans eyni yaddaşdakı obyektə işarə edir.

Ancaq, metod daxilində parametrə yeni bir referans təyin etsəniz (məsələn, param = new Object()), bu, metod xaricindəki orijinal referansı təsir etməz, çünki referansın nüsxəsi lokal olaraq dəyişdirilir.

Nümunə:

class Person {
    public string Name;
}

void ChangeName(Person p) {
    p.Name = "Иван"; // obyektin adını dəyişəcək
    p = new Person(); // lokal olaraq referansı dəyişəcək, amma metod xaricində təsiri olmayacaq
    p.Name = "Пётр";
}

Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // "Иван" göstərəcək

Beləliklə, obyektin ötürülməsi, referansın dəyəri ilə ötürülür. Obrazın vəziyyətindəki dəyişikliklər saxlanılır, amma referansın yenidən təyin edilməsi təsir etmir.