Junior — Middle
Quais processos e consequências ocorrem quando um objeto é passado para uma função ou método na programação?
sobes.tech IA
Resposta da IA
Em C#, ao passar um objeto para uma função ou método, é passada uma cópia da referência a esse objeto, não o próprio objeto. Isso significa que, dentro do método, é possível alterar o estado do objeto (seus campos e propriedades), e essas alterações serão visíveis fora do método, pois a referência aponta para o mesmo objeto na memória.
No entanto, se dentro do método for atribuída uma nova referência ao parâmetro (por exemplo, param = new Object()), isso não afetará a referência original fora do método, pois a cópia da referência é alterada localmente.
Exemplo:
class Person {
public string Name;
}
void ChangeName(Person p) {
p.Name = "Иван"; // irá alterar o nome do objeto
p = new Person(); // irá alterar localmente a referência, mas não afetará fora do método
p.Name = "Пётр";
}
Person person = new Person { Name = "Алексей" };
ChangeName(person);
Console.WriteLine(person.Name); // Vai imprimir "Иван"
Portanto, passar um objeto é passar a referência por valor. As alterações no estado do objeto permanecem, mas a reatribuição da referência não.