Diferença entre parâmetros ref e out – C#

0

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!

 

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com