¿Cuál es el uso de "ref" para las variables de tipo de referencia en C #?
Entiendo que si paso un tipo de valor int
, struct
, etc.) como parámetro (sin laref
palabra clave), se pasa una copia de esa variable al método, pero si uso laref
palabra clave se pasa una referencia a esa variable, no una nueva.
Pero con tipos de referencia, como clases, incluso sin laref
palabra clave, se pasa una referencia al método, no una copia. Entonces, ¿para qué sirve laref
palabra clave con tipos de referencia?
Tomar como ejemplo
var x = new Foo();
¿Cuál es la diferencia entre lo siguiente?
void Bar(Foo y) {
y.Name = "2";
}
void Bar(ref Foo y) {
y.Name = "2";
}