Diferença entre ref e out em C #

Autor: Laura McKinney
Data De Criação: 2 Abril 2021
Data De Atualização: 5 Poderia 2024
Anonim
Diferença entre ref e out em C # - Tecnologia
Diferença entre ref e out em C # - Tecnologia

Contente


"Ref" e "Out" são os modificadores de parâmetro usados ​​em C #. Usando ref e out, você pode passar qualquer tipo de valor por sua referência a qualquer método. O motivo de passar qualquer tipo de valor por sua referência introduz a principal diferença entre a palavra-chave ref e out. o ref A palavra-chave permite que o método chamado altere o conteúdo do argumento passado com a palavra-chave ref. o Fora A palavra-chave permite que o método chamado retorne mais de um valor em uma única chamada. Vamos estudar a diferença entre ref e out junto com um gráfico de comparação.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoRef.Fora
BasicPermite a alteração no valor do argumento prosseguido com a palavra-chave ref.Ele permite que um método retorne esses valores precedidos por uma palavra-chave out.
InicializaçãoO parâmetro ref deve ser inicializado antes da chamada do método.O parâmetro out deve ser inicializado dentro do método chamado antes de terminar.
DeclaraçãoO parâmetro a ser alterado por um método é declarado como ref enquanto declaração e chamada de método.O parâmetro a ser retornado deve ser declarado como ref enquanto declaração e chamada de método.


Definição da palavra-chave Ref

O "ref" é um modificador de parâmetro usado quando há necessidade de chamar um método com chamada por referência. Quando queremos que as alterações feitas nos argumentos dentro de um método chamado sejam refletidas no valor original dessa variável, o modificador ref do parâmetro é usado. O tipo de valor que queremos declarar como ref é precedido pela palavra-chave “ref” durante a declaração do método e pela chamada do método. Mais de um parâmetro pode ser declarado como "ref" ao chamar e declarar um método.

using System; classe DemoRef {quadrado vazio público (ref int s) {s = s * s; }} classe Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("uma chamada de método anterior:" + a); ob.Square (ref a); // Palavra-chave usada ref Console.WriteLine ("a after call:" + a); }} // gera uma chamada de método anterior: 10 a chamada de método posterior: 100

No código acima, a variável 'a' é passada como argumento para o método Square (ref a) junto com o modificador de parâmetro ref anexado a ela. Significa que qualquer alteração que o método Square (ref a) executará na variável 'a' dentro dela refletirá no valor original de 'a', fora do método também.


Existem alguns pontos importantes que devem ser lembrados ao lidar com o modificador de parâmetro “ref”.

  • O argumento que você está passando pela ref para um método deve ser inicializado antes da chamada do método.
  • O método não deve atribuir o valor inicial ao argumento ref.
  • Você também pode usar ref junto com a variável de referência também.

Definição de palavra-chave Out

Cada vez que você chama um método, ele retornará apenas um único valor. Se você deseja que um método retorne mais de um valor em uma chamada, a palavra-chave "out" deve ser usada junto com os parâmetros que você deseja retornar quando o método for encerrado. Às vezes, acontece que quando não queremos passar nada para o método, mas queremos que o método retorne algo, usamos parâmetros com uma palavra-chave out.Vamos entender com um exemplo.

using System; classe DemoOut {public int Decompose (x duplo, fração dupla out) {int whole_num; número inteiro = (int) x; fração = x - número inteiro; return_num inteiro; }} classe Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; dupla fratura; i = ob.Decomponha (100.125, fora frac); // usou a palavra-chave Console.WriteLine ("A parte do número inteiro é" + i); Console.WriteLine ("parte da fração é" + frac); }} // saída Parte inteira é 100 Parte fracionária é 0,125

No código acima, dois valores estão sendo retornados pelo método Decompose (). Um retorna pela palavra-chave "return", ou seja ,_núm_um inteiro, e outro retorna um parâmetro que é precedido pela palavra-chave out enquanto o método chama, ou seja, "frac".

Os pontos importantes a serem lembrados sobre a palavra-chave out.

  • Diferente da palavra-chave ref, o parâmetro using out keyword não deve ser inicializado antes da chamada do método.
  • O próprio método chamado atribuirá um valor ao parâmetro com uma palavra-chave out, pois é considerado não atribuído dentro do método chamado, ou seja, presume-se que não tenha valor inicial.
  • O método chamado deve atribuir um valor ao parâmetro out antes que o método termine.
  • A palavra-chave out também é aplicável à variável de referência.
  1. Quando uma variável precedida pela palavra-chave ref é passada para qualquer método, as alterações feitas nela dentro do método refletem em seu valor original. Quando uma variável passada para um método é precedida pela palavra-chave out, o método a retorna sem usar a palavra-chave return.
  2. O parâmetro ref deve ser inicializado antes de ser passado para um método. Por outro lado, o parâmetro out deve ser inicializado dentro do método para o qual é passado.
  3. Ao chamar, declarar ou definir um método, o parâmetro ref é declarado explicitamente como ref. Por outro lado, ao chamar, declarar ou definir um método, o parâmetro out é declarado explicitamente como out.

Conclusão:

Sempre que a variável deve ser passada pela referência a um método, a palavra-chave ref e out pode ser usada. Considerando que, o motivo de usar as duas palavras-chave é diferente, onde a palavra-chave ref pode ser usada para alterar o valor do argumento precedido pela palavra-chave ref, passada para o método chamado e a palavra-chave out é usada para retornar o valor do argumento precedido pela palavra-chave out.