Share via


Modificador de parâmetro out (Referência de C#)

A palavra-chave out causa dos argumentos para ser passados por referência. Isso é como a palavra-chave de referência , exceto que ref requer que a variável é inicializado antes de ser passado. Para usar um parâmetro de out , a definição do método e o método de chamada devem explicitamente usar a palavra-chave de out . Por exemplo:

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

Embora as variáveis passados como argumentos de out não precisem ser inicializados antes de ser passado, o método chamado é necessário atribuir um valor antes que o método retorna.

Embora as palavras-chave de ref e de out farão com que o comportamento diferente de tempo de execução, não são considerados parte da assinatura do método em tempo de compilação. Portanto, os métodos não podem ser sobrecarregados se a única diferença é que um método aceita um argumento de ref e o outro utiliza um argumento de out . O código a seguir, por exemplo, não será compilado:

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

Sobrecarregar pode ser feito, o entanto, se um método utiliza ref ou argumento de out e o outro não usa nenhum, assim:

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

As propriedades não são variáveis e portanto não podem ser passados como parâmetros de out .

Para obter informações sobre passar matrizes, consulte Passando matrizes com o uso de ref e out (Guia de Programação em C#).

Você não pode usar as palavras-chave de ref e de out para os seguintes tipos de métodos:

  • Métodos de Async, que você define usando o modificador de async .

  • Métodos de iterador, que inclui uma instrução de retorno de produzir ou de yield break .

Exemplo

Declare um método de out é útil quando você deseja um método para retornar vários valores. O exemplo a seguir usa out para retornar três variáveis com uma única chamada de método. Observe que o segundo argumento é atribuído ao zero. Isso permite métodos para retornar valores opcionalmente.

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

Especificação da linguagem C#

Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

Palavras-chave C#

Parâmetros de método (Referência de C#)

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#