Junior — Middle
Jaké procesy a důsledky nastávají, když je objekt předán funkci nebo metodě v programování?
sobes.tech AI
Odpověď od AI
V jazyce C# při předávání objektu do funkce nebo metody se předává kopie odkazu na tento objekt, nikoliv samotný objekt. To znamená, že uvnitř metody lze měnit stav objektu (jeho pole a vlastnosti), a tyto změny budou viditelné i mimo metodu, protože odkaz ukazuje na ten samý objekt v paměti.
Nicméně, pokud uvnitř metody přiřadíte parametru nový odkaz (například param = new Object()), nebude to mít vliv na původní odkaz mimo metodu, protože kopie odkazu je změněna lokálně.
Příklad:
class Person {
public string Name;
}
void ChangeName(Person p) {
p.Name = "Иван"; // změní jméno objektu
p = new Person(); // lokálně změní odkaz, ale mimo metodu to nemá vliv
p.Name = "Пётр";
}
Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // vypíše "Иван"
Tedy, předání objektu je předání odkazu po hodnotě. Změny stavu objektu zůstávají, ale přepsání odkazu nikoliv.