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

Quand et pourquoi utiliser « ref » avec des variables de type référence en C# ?

Linda Hamilton
Libérer: 2025-01-06 20:33:41
original
308 Les gens l'ont consulté

When and Why Use

Comprendre l'utilisation de "ref" avec des variables de type référence en C#

Bien qu'il soit clair que le mot-clé "ref" nous permet de Si vous transmettez une référence aux variables de type valeur par valeur, sa signification avec les types de référence peut être moins apparente. Cet article explore les cas d'utilisation spécifiques de "ref" avec des variables de type référence.

Considérez la classe suivante :

public class Foo
{
    public string Name;

    public Foo(string name)
    {
        Name = name;
    }
}
Copier après la connexion

Passer une variable de type référence par valeur vs. Référence :

Sans le mot-clé "ref", passer une variable de type référence (par exemple, "x") à une méthode transmet une référence, pas une copie. Cela signifie que la méthode opère sur l'objet d'origine. Par exemple :

var x = new Foo("1");

void Bar(Foo y)
{
    y.Name = "2";
}

Bar(x); // changes the Name property of the original object
Copier après la connexion

Utilisation de "ref" pour modifier la référence d'une variable de type référence :

Cependant, le mot-clé "ref" avec type de référence variables a un but précis : elle nous permet de changer la référence de la variable au sein de la méthode. Par exemple :

Foo foo = new Foo("1");

void Bar(ref Foo y)
{
    y = new Foo("2"); // creates a new object and assigns it to y
}

Bar(ref foo); // changes the reference of 'foo' to point to the new object
Copier après la connexion

Dans ce cas, après avoir appelé "Bar(ref foo)", "foo" ne fera plus référence à l'objet d'origine mais fera référence à l'objet nouvellement créé avec la propriété Name "2 ".

Application pratique :

Cette fonctionnalité peut être utile dans les scénarios où nous souhaitons renvoyer un nouvel objet à partir d'une méthode sans devoir renvoyer explicitement la référence en tant que paramètre de sortie. Par exemple, nous pourrions créer une méthode qui recherche et renvoie le premier élément d'une liste répondant à un certain critère :

public static T FindFirst<T>(List<T> list, Func<T, bool> predicate) where T : class
{
    foreach (T item in list)
    {
        if (predicate(item))
            return item;
    }

    return null;
}
Copier après la connexion

Utiliser le mot-clé "ref" dans cette méthode permet d'éviter d'avoir à créer un out tout en étant capable de renvoyer l'objet trouvé.

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