Junior — Middle
85
Какие действия выполняются при передаче ссылочных объектов в функцию или метод?
Answer from AI
sobes.tech AI
При передаче ссылочных объектов в функцию или метод в C# передается копия ссылки на объект, а не сам объект. Это означает, что внутри функции можно изменять состояние объекта (его поля и свойства), и эти изменения будут видны за пределами функции, так как ссылка указывает на тот же объект в памяти.
Однако если внутри метода присвоить параметру новую ссылку (например, param = new Object()), то это не повлияет на исходную ссылку вне метода, так как копия ссылки была изменена, а не оригинал.
Пример:
class Person { public string Name; }
void ChangeName(Person p) {
p.Name = "Иван"; // изменит имя объекта
}
void ReplacePerson(Person p) {
p = new Person { Name = "Пётр" }; // изменит только локальную копию ссылки
}
Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // Выведет "Иван"
ReplacePerson(person);
Console.WriteLine(person.Name); // Всё ещё "Иван"
Таким образом, при передаче ссылочных типов можно изменять состояние объекта, но нельзя переназначить саму ссылку вне метода.