Entendo que, se eu passar um tipo de valor ( int, structetc.) como parâmetro (sem a refpalavra - chave), uma cópia dessa variável é passada para o método, mas se eu usar a refpalavra-chave, uma referência a essa variável será passada, não é novo.
Mas com tipos de referência, como classes, mesmo sem a refpalavra - chave, uma referência é passada para o método, não uma cópia. Então, qual é o uso da refpalavra-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";
}
