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); // ще изведе "Иван"

Така, предаването на обект е предаване на референцията по стойност. Промените в състоянието на обекта остават, а преназначаването на референцията — не.