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); // ще изведе "Иван"
Така, предаването на обект е предаване на референцията по стойност. Промените в състоянието на обекта остават, а преназначаването на референцията — не.