Maison >développement back-end >C++ >Les modificateurs Ref et Out peuvent-ils être utilisés dans les méthodes d'extension C# ?

Les modificateurs Ref et Out peuvent-ils être utilisés dans les méthodes d'extension C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-07 16:46:41471parcourir

Can Ref and Out Modifiers Be Used in C# Extension Methods?

modificateurs ref et out dans les méthodes d'extension C#

Dans une méthode d'extension qui étend un type référence, le premier paramètre ne peut pas utiliser le modificateur ref ou out. Cependant, à partir de C# 7.2, il est possible d'ajouter le modificateur ref au premier paramètre d'une méthode d'extension d'un type valeur étendu (struct).

La raison de cette limitation est que le premier paramètre d'une méthode d'extension est considéré comme un paramètre récepteur, qui représente l'instance en cours d'extension. Pour les types référence, le paramètre récepteur est toujours passé par référence, donc l'utilisation du modificateur ref ou out est redondante.

Cependant, pour les types valeur, le paramètre récepteur est passé par valeur, ce qui signifie que toute modification apportée à celui-ci dans la méthode d'extension ne sera pas reflétée dans l'instance de type valeur d'origine. En utilisant le modificateur ref, vous pouvez passer une instance de type valeur par référence, vous permettant de modifier son état dans une méthode d'extension.

Exemple :

<code class="language-csharp">public struct MyProperties
{
    public string MyValue { get; set; }
}

public static class MyExtensions
{
    public static void ChangeMyValue(this ref MyProperties myProperties)
    {
        myProperties.MyValue = "hello from MyExtensions";
    }
}

public class MyClass
{
    public MyClass()
    {
        MyProperties myProperties = new MyProperties();
        myProperties.MyValue = "hello world";
        myProperties.ChangeMyValue(); // Now modifies the original myProperties instance
    }
}</code>

Dans cet exemple, la méthode d'extension ChangeMyValue peut modifier l'état de l'instance de type valeur ref à l'aide du modificateur MyProperties. Notez que le modificateur out ne peut toujours pas être utilisé sur le premier paramètre d'une méthode d'extension.

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