Rozumiem, że jeśli mijam typu wartość ( int
, struct
, itd.) Jako parametr (bez ref
hasła), kopia tej zmiennej jest przekazywany do metody, ale jeśli mogę użyć ref
słowa kluczowego odniesienie do tej zmiennej jest przekazywana, nie nowy.
Ale w przypadku typów referencyjnych, takich jak klasy, nawet bez ref
słowa kluczowego, referencja jest przekazywana do metody, a nie kopia. Więc jakie jest zastosowanie ref
słowa kluczowego z typami referencyjnymi?
Weź na przykład:
var x = new Foo();
Jaka jest różnica między następującymi?
void Bar(Foo y) {
y.Name = "2";
}
i
void Bar(ref Foo y) {
y.Name = "2";
}