Entendo que, se eu passar um tipo de valor ( int
, struct
etc.) como parâmetro (sem a ref
palavra - chave), uma cópia dessa variável é passada para o método, mas se eu usar a ref
palavra-chave, uma referência a essa variável será passada, não é novo.
Mas com tipos de referência, como classes, mesmo sem a ref
palavra - chave, uma referência é passada para o método, não uma cópia. Então, qual é o uso da ref
palavra-chave com tipos de referência?
Considere por exemplo:
var x = new Foo();
Qual é a diferença entre os seguintes?
void Bar(Foo y) {
y.Name = "2";
}
e
void Bar(ref Foo y) {
y.Name = "2";
}