Maison >développement back-end >C++ >Quand et pourquoi utiliser « ref » avec les types de référence en C# ?
L'importance de "ref" pour les variables de type référence en C#
Les programmeurs C# rencontrent souvent le mot-clé "ref" lorsqu'ils travaillent avec une référence -variables de type, telles que les classes. Bien que le comportement de "ref" avec les types valeur soit bien connu, son objectif pour les types référence peut être moins clair.
Contexte
Lors de la transmission d'une valeur -type par valeur sans le mot-clé "ref", une copie de la variable est créée et transmise à la méthode. Cependant, avec les types référence, les transmettre sans "ref" implique déjà de référencer la variable elle-même.
Utilisation de "ref" avec les types référence
Alors, qu'est-ce que c'est l'avantage d'utiliser "ref" avec des types de référence ? La principale différence réside dans la possibilité de réaffecter la référence de la variable.
Exemple
Considérons l'exemple suivant :
var x = new Foo(); // Without "ref" void Bar(Foo y) { y.Name = "2"; } // With "ref" void Bar(ref Foo y) { y.Name = "2"; } // Test Bar(x);
Dans le premier cas , y est une référence à x et la modification de y.Name met à jour l'objet. Cependant, le deuxième cas, en utilisant "ref", nous permet de faire quelque chose d'unique.
Dans la méthode Bar avec "ref", nous pouvons réaffecter la référence vers laquelle y pointe. Par exemple :
Foo foo = new Foo("1"); // Reassign reference via "ref" void Bar(ref Foo y) { y = new Foo("2"); } Bar(ref foo); // After Bar() call Console.WriteLine(foo.Name);
Ici, l'appel à Bar(ref foo) attribue effectivement une nouvelle instance Foo à foo. Cela signifie que la variable foo d'origine pointe désormais vers un objet différent portant le nom "2".
Conclusion
Par conséquent, "ref" avec des types de référence fournit le flexibilité pour réaffecter la référence de l'objet, permettant des scénarios avancés qui ne seraient pas possibles autrement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!