Ref e out são usados para passar um argumento dentro de um método. Neste artigo, você vai aprender as diferenças entre estes dois parâmetros.
Ref
A palavra-chave ref é usado para passar um argumento como uma referência. Isto significa que quando o valor do referido parâmetro é mudado no método, que se reflete no método de chamada. Um argumento que é passado usando uma palavra-chave ref deve ser inicializado no método de chamada antes de ser passado para o método chamado.
Out
A palavra-chave out também é usada para passar um argumento como a palavra-chave ref, mas o argumento pode ser passado sem atribuir qualquer valor a ela. Um argumento que é passado usando uma palavra-chave out deve ser inicializado no método antes de retornar a chamada do mesmo.
Veja um exemplo:
public class Example
{
public static void Main() //chamada do metodo
{
int val1 = 0; //precisa ser inicializado
int val2; //opcional
Example1(ref val1);
Console.WriteLine(val1); // val1=1
Example2(out val2);
Console.WriteLine(val2); // val2=2
}
static void Example1(ref int value) //metodo chamado
{
value = 1;
}
static void Example2(out int value) //metodo chamado
{
value = 2; //precisa ser inicializado
}
}
/* Saída
1
2
*/
Atenção:
- Não se confunda com o conceito de passagem por referência e o conceito de tipo de referência. Estes dois conceitos não são os mesmos.
- Um tipo de valor ou um tipo de referência pode ser passado para o parâmetro método usando palavra-chave ref. Não há um tipo de valor “fechado” quando ele é passado por referência.
- Propriedades não podem ser passadas por ref ou out desde que internamente são funções e variáveis.
Por hoje é só pessoal! Um grande abraço!
