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!