Share via


out, modificateur de paramètre (Référence C#)

Le mot clé out fait en sorte que les arguments soient passés par référence. Il est semblable au mot clé ref, mais ref nécessite que la variable soit initialisée avant d'être passée. Pour utiliser un paramètre out, la définition de méthode et la méthode d'appel doivent toutes deux utiliser le mot clé out explicitement. Par exemple :

class OutExample
{
    static void Method(out int i)
    {
        i = 44;
    }
    static void Main()
    {
        int value;
        Method(out value);
        // value is now 44
    }
}

Bien que les variables passées en tant qu'arguments out n'aient pas besoin d'être initialisées avant d'être passées, la méthode appelée est requise pour assigner une valeur avant le retour de la méthode.

Bien que les mots clés ref et out entraînent des comportements différents au moment de l'exécution, ils ne sont pas considérés comme faisant partie de la signature de méthode au moment de la compilation. Par conséquent, les méthodes ne peuvent pas être surchargées si une méthode prend un argument ref et que l'autre prend un argument out. Par conséquent, l'exemple de code suivant ne procèdera pas à la compilation :

class CS0663_Example
{
    // Compiler error CS0663: "Cannot define overloaded  
    // methods that differ only on ref and out". 
    public void SampleMethod(out int i) { }
    public void SampleMethod(ref int i) { }
}

Toutefois, la surcharge peut survenir si une méthode prend un argument ref ou out et si l'autre n'utilise ni l'un ni l'autre, comme suit :

class OutOverloadExample
{
    public void SampleMethod(int i) { }
    public void SampleMethod(out int i) { i = 5; }
}

Les propriétés ne sont pas des variables et par conséquent ne peuvent pas être passées en tant que paramètres out.

Pour plus d'informations sur le passage de tableaux, consultez Passage de tableaux à l'aide de paramètres ref et out (guide de programmation C#).

Vous ne pouvez pas utiliser les mots clés d' ref et d' out pour les types suivants de méthodes :

  • Méthodes Async, que vous définissez à l'aide de le modificateur d' async .

  • Méthodes d'itérateur, qui incluent une instruction de retour yield ou d' yield break .

Exemple

Déclarer une méthode out est utile si vous voulez qu'une méthode retourne plusieurs valeurs. Cet exemple utilise out pour retourner trois variables avec un seul appel de méthode. Notez que le troisième argument est assigné à la valeur Null. Cela permet aux méthodes de retourner éventuellement des valeurs.

    class OutReturnExample
    {
        static void Method(out int i, out string s1, out string s2)
        {
            i = 44;
            s1 = "I've been returned";
            s2 = null;
        }
        static void Main()
        {
            int value;
            string str1, str2;
            Method(out value, out str1, out str2);
            // value is now 44 
            // str1 is now "I've been returned" 
            // str2 is (still) null;
        }
    }

Spécification du langage C#

Pour plus d'informations, voir la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi

Référence

Mots clés C#

Paramètres de méthode (référence C#)

Concepts

Guide de programmation C#

Autres ressources

Référence C#