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
Parâmetros do método (referência de C#)