Share via


Modificatore del parametro out (Riferimenti per C#)

Con la parola chiave out gli argomenti vengono passati per riferimento. È simile alla parola chiave ref, ad eccezione del fatto che con ref è necessario inizializzare la variabile prima che venga passata. Per utilizzare un parametro out, è necessario che la definizione del metodo e il metodo chiamante utilizzino in modo esplicito la parola chiave out. Di seguito è riportato un esempio.

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

Anche se le variabili passate come argomenti out non devono necessariamente essere già state inizializzate prima di essere passate, il metodo chiamato deve assegnare un valore prima che venga completato.

Anche se le parole chiave ref e out provocano un comportamento in fase di esecuzione diverso, non sono considerate parte della firma del metodo in fase di compilazione. Non è pertanto possibile eseguire l'overload dei metodi se l'unica differenza consiste nel fatto che un metodo accetta un argomento ref e l'altro un argomento out. Il codice seguente non viene ad esempio compilato:

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) { }
}

L'overload può essere tuttavia eseguito se un metodo accetta un argomento ref o out e l'altro non ne utilizza, come riportato di seguito:

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

Le proprietà non sono variabili e pertanto non possono essere passate come parametri out.

Per ulteriori informazioni sul passaggio delle matrici, vedere Passaggio di matrici mediante ref e out (Guida per programmatori C#).

Esempio

La dichiarazione di un metodo out risulta utile quando si desidera che un metodo restituisca più valori. Nell'esempio seguente viene utilizzato out per restituire tre variabili con un'unica chiamata al metodo. Si noti che il terzo argomento è assegnato a null. In questo modo i metodi possono restituire valori in modo facoltativo.

    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;
        }
    }

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Parole chiave di C#

Parametri di metodo (Riferimenti per C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#