Compartilhar via


check-out de modificador de parâmetro (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 Arrays usando ref e out (C# Programming Guide).

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 Especificação de linguagem do C# A especificação da linguagem é a fonte definitiva para a sintaxe e o uso da linguagem C#.

Consulte também

Referência

Palavras-chave C#

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

Conceitos

Guia de programação do C#

Outros recursos

Referência de C#