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