Maison >développement back-end >C++ >Quand et pourquoi utiliser « ref » avec les types de référence en C# ?

Quand et pourquoi utiliser « ref » avec les types de référence en C# ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-06 20:49:44835parcourir

When and Why Use

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn