out (Référence C#)

Mise à jour : novembre 2007

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 d'appel est requise pour assigner une valeur avant le retour de la méthode.

Les mots clés ref et out sont traités différemment au moment de l'exécution, mais ils sont traités de la même façon 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 l'autre un argument out. Par exemple, ces deux méthodes sont identiques en termes de compilation, donc le code suivant ne compilera pas :

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#).

Exemple

Déclarer une méthode out est utile si vous voulez qu'une méthode retourne plusieurs valeurs. Une méthode qui utilise un paramètre out peut encore accéder à des variables comme type de retour (consultez retour) mais elle peut également retourner un ou plusieurs objets à une méthode d'appel en tant que paramètres out. 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, consultez les sections suivantes dans Spécifications du langage C#.

  • 5.1.6 Paramètres de sortie

  • 10.6.1.3 Paramètres de sortie

Voir aussi

Concepts

Guide de programmation C#

Référence

Mots clés C#

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

Autres ressources

Référence C#