Compartilhar via


fora o modificador de parâmetro (referência de C#)

O out palavra-chave faz com que os argumentos a serem passados por referência. Isso é como o ref palavra-chave, exceto que ref requer que a variável ser inicializada antes de ser passado. Para usar um out parâmetro, a definição do método e o método de chamada deve usar explicitamente a out palavra-chave. 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 transmitidas como out argumentos não precisam ser inicializada antes de ser passado, o método chamado é necessário atribuir um valor antes do método retorna.

Embora o ref e out palavras-chave causam comportamento diferente do tempo de execução, eles não são considerados parte da assinatura do método em tempo de compilação. Portanto, métodos não podem ser sobrecarregados se a única diferença é que um método leva um ref argumento e a outra usa um out argumento. 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) { }
}

Sobrecarga pode ser feito, no entanto, se um método terá uma ref ou out argumento e o outro não usa nenhuma, como este:

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

Propriedades não são variáveis e, portanto, não podem ser passadas como out parâmetros.

Para obter informações sobre matrizes de passagem, consulte Passando o uso de Arrays ref e out (guia de programação C#).

Exemplo

Declarando um out método é útil quando você deseja que um método para retornar valores múltiplos. O exemplo a seguir usa out para retornar a três variáveis com uma chamada de método único. Observe que o terceiro argumento é atribuído como null. Isso permite que os métodos 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 C# Language Specification A especificação de linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

C# Keywords

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

Conceitos

C# Programming Guide

Outros recursos

C# Reference