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# ?

Barbara Streisand
Libérer: 2025-01-06 20:41:13
original
509 Les gens l'ont consulté

When and Why Use `ref` with Reference Types in C#?

Comprendre le rôle de "ref" dans le passage de variables de type référence en C

En C#, les variables peuvent être soit des types valeur, soit des types référence. Lors de la transmission de types de valeurs aux méthodes, le mot-clé ref est utilisé pour modifier le comportement. Cependant, pour les types référence, le but de ref est moins intuitif.

Le comportement de transmission des types référence par défaut

En C#, les types référence sont toujours transmis aux méthodes en tant que références, même sans le mot-clé ref. Cela signifie que les modifications apportées à la référence au sein de la méthode affecteront la variable d'origine en dehors de la méthode. Pour illustrer :

var x = new Foo();
Copier après la connexion
void Bar(Foo y)
{
    y.Name = "2"; // Modification to the reference within the method
}

Bar(x);

Console.WriteLine(x.Name); // Output: "2"
Copier après la connexion

Dans cet exemple, bien que nous transmettions x à la méthode Bar sans le mot-clé ref, la valeur de x.Name est toujours modifiée, démontrant le comportement de passage de référence de reference- types.

Le rôle unique de "ref" avec les types de référence

Alors que le mot-clé ref n'est généralement pas requis pour le type de référence au passage, il joue un rôle crucial dans un scénario spécifique : la réaffectation de la référence elle-même. Sans ref, toute modification au sein de la méthode n'affectera que la référence locale transmise à la méthode, laissant la variable d'origine inchangée. Cependant, avec ref, vous pouvez modifier la référence réelle vers laquelle pointe la variable. Voici un exemple :

Foo foo = new Foo("1");

void Bar(ref Foo y)
{
    y = new Foo("2"); // Reassigning the reference y points to
}

Bar(ref foo);

Console.WriteLine(foo.Name); // Output: "2"
Copier après la connexion

Dans ce scénario, le mot-clé ref nous permet de réaffecter la référence vers laquelle foo pointe, modifiant ainsi la valeur de foo.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal