Capisco che se passo un valore-tipo ( int
, struct
ecc.) Come parametro (senza la ref
parola chiave), una copia di quella variabile viene passata al metodo, ma se uso la ref
parola chiave viene passato un riferimento a quella variabile, non uno nuovo.
Ma con tipi di riferimento, come le classi, anche senza la ref
parola chiave, viene passato un riferimento al metodo, non una copia. Quindi, a che serve la ref
parola chiave con i tipi di riferimento?
Prendi ad esempio:
var x = new Foo();
Qual è la differenza tra i seguenti?
void Bar(Foo y) {
y.Name = "2";
}
e
void Bar(ref Foo y) {
y.Name = "2";
}