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); // გამოიტანს "Иван"

ამიტომ, ობიექტის გადაცემა — ეს არის მითითების გადაცემა ფასით. ობიექტის მდგომარეობის ცვლილებები რჩება, ხოლო მითითების გადატანა — არა.