Diferença entre out e ref em C #

Diferença-chave - fora vs ref em C #
 

C # é uma linguagem de programação moderna desenvolvida pela Microsoft. É usado para o desenvolvimento de várias aplicações para desktop, web e dispositivos móveis. Funções ou métodos é um conceito em programação. Esse grupo de instruções usado para executar uma tarefa específica é conhecido como função ou método. Nos programas C #, a execução começa em main (). É um exemplo de método. Ao chamar um método, os dados são passados ​​para o método ou recebidos do método. O método que está chamando o novo método é conhecido como chamando o método. O novo método é conhecido como chamado método. Para gerenciar os valores passados ​​e recuperar o resultado, o C # usa parâmetros. São parâmetros avaliados, parâmetros de saída e parâmetros de referência. Os parâmetros de valor são usados ​​para passar parâmetros para o método por valor. Os parâmetros de referência são usados ​​para passar parâmetros para o método por referência. Os parâmetros de saída são usados ​​para retornar o resultado do método. Em C #, a palavra-chave out é usada para parâmetros de saída e a palavra-chave ref é usada para referenciar parâmetros. o diferença chave entre fora e ref em C # é que, out é uma palavra-chave usada para referenciar um parâmetro de saída usado para passar resultados do método chamado para o método de chamada, enquanto ref é uma palavra-chave para referir um parâmetro de referência usado para transmitir dados do método de chamada para o método chamado e para receber os dados do método chamado ao método de chamada.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que há em c #
3. O que é ref em C #
4. Semelhanças entre out e ref em C #
5. Comparação lado a lado - saída vs ref em C # na forma de tabela
6. Resumo

O que há em c #?

A sintaxe da função ou método é a seguinte. Um método possui vários elementos, como nome do método, lista de parâmetros, tipo de retorno e especificador de acesso.

(lista de parâmetros)

// instruções a serem executadas

Cada método possui um método exclusivo para fazer a chamada de função. As instruções executáveis ​​estão dentro de chaves. O tipo de retorno explica se a função retorna um valor ou não. Quando não há tipo de retorno, é chamado de nulo. O especificador de acesso é usado para especificar a acessibilidade do método no aplicativo. Os parâmetros são usados ​​para receber ou passar dados para o método. Também pode haver métodos sem parâmetros. Os parâmetros podem ser parâmetros avaliados, parâmetros de saída ou parâmetros de referência.

Os parâmetros de saída são usados ​​para transmitir resultados de volta ao método de chamada. Para isso, o parâmetro deve ser declarado com a palavra-chave out. O parâmetro de saída não cria um novo local de armazenamento. Geralmente, um método retorna um valor. Mas em C #, é possível retornar dois valores de uma função usando parâmetros de saída. Consulte o programa abaixo.

names1 application1

            cálculo de classe pública

exibição de vazio público (saída int a, saída int b)

valor int = 5;

a = valor;

b = valor;

a = a * a;

b = b * b;

public static void main (String [] args)

int valor1 = 10, valor2 = 20;

Cálculo cal = novo cálculo ();

cal.display (valor fora1, valor fora2);

Console.ReadLine ();

A função de exibição é chamada do método principal. O valor1 e o valor dois têm 10 e 20, mas não são considerados no método. O valor de a é 25 e o valor de b também é 25 na função. Portanto, esses valores são retornados. Ao imprimir valor1 e valor2, não fornecerá 10 e 20. Em vez disso, imprimirá 25 e 25. Usando a palavra-chave out, vários valores podem ser retornados do método.

O que é ref em C #?

Ao passar parâmetros por valor, um novo local de armazenamento é criado para cada parâmetro. Os parâmetros reais que foram enviados do programa principal não são alterados. Em vez disso, esses valores são copiados para um local separado. Essas novas cópias de variáveis ​​são chamadas de parâmetros formais. Consulte o código abaixo.

names1 application1

cálculo de classe pública

troca de void público (int x, int y)

int temp;

temp = x;

x = y;

y = temp;

public static void main (String [] args)

Cálculo cal = novo cálculo ();

int p = 2;

int q = 3;

cal.swap (p, q);

Console.WriteLine (p);

Console.WriteLine (q);

Console.ReadLine ();

De acordo com o programa acima, a classe Calculation possui um método swap (). No programa principal, um objeto do tipo Cálculo é criado. Existem dois valores como p e q. A variável p tem o valor 2 e a variável q tem o valor 3. Esses dois valores são passados ​​para o método de troca. No método de troca, o valor 2 é copiado na variável xe o valor 3 é copiado na variável y. Usando a variável temp, os valores são trocados. De volta ao programa principal, ao imprimir peq, os valores não são trocados. O valor p ainda é 2 e o valor q é 3. Mesmo no método de troca, os valores são trocados, mas não refletem no programa principal.

Ao contrário da passagem de valores como acima, é possível passar parâmetros por referência. Uma variável de referência é uma referência ao local da memória. Não há nova localização de memória criada. As mudanças no método refletidas no no programa principal. Em C #, os parâmetros de referência são referidos usando a palavra-chave ref. Consulte o programa abaixo.

names1 application1

cálculo de classe pública

troca de void público (ref int x, ref int y)

int temp;

temp = x;

x = y;

y = temp;

public static void main (String [] args)

Cálculo cal = novo cálculo ();

int p = 2;

int q = 3;

cal.swap (ref p, ref q);

Console.WriteLine (p);

Console.WriteLine (q);

Console.ReadLine ();

De acordo com o programa acima, a classe Cálculo possui o método de troca. No programa principal, um objeto do tipo Cálculo é criado. Existem duas variáveis ​​como p e q. A variável p tem o valor 2 e a variável q tem o valor 3. Em vez de passar valores, a referência aos locais de memória de p e q é passada para o método. Essas variáveis ​​de referência são referidas usando ref. No método de troca, em vez de copiar os valores para um novo local, as alterações são feitas nos parâmetros reais. Ao imprimir os valores peq do programa principal, ele fornecerá os valores trocados. Agora, o valor de p é 3 e o valor de q é 2.

Qual é a semelhança entre out e ref em C #?

  • Ambas são palavras-chave usadas para referenciar os parâmetros de um método.

Qual é a diferença entre out e ref em C #?

out vs ref em c #

A saída é uma palavra-chave em C # usada para referenciar um parâmetro de saída. É usado para passar os resultados de um método chamado para chamar o método. A ref é uma palavra-chave em C # usada para referenciar um parâmetro de referência. É usado para passar dados do método de chamada para o método chamado e retornar dados do método chamado para o método de chamada.
Funcionalidade
Ao usar a palavra-chave out, os dados podem ser transmitidos do método de chamada para o método chamado. Mas esses dados são descartados. É usado para passar o resultado para o método de chamada do método chamado. Ao usar a palavra-chave ref, os dados são transmitidos do método de chamada para o método chamado e os dados manipulados são transmitidos de volta para o método de chamada.
Passagem de dados
Ao usar a palavra-chave out, os dados são transmitidos de uma maneira que é um método chamado para o método de chamada. Ao usar a palavra-chave ref, os dados são transmitidos de duas maneiras: do método de chamada para o método chamado e do método chamado para o método de chamada.

Resumo - fora vs ref em C # 

Ao invocar um método, pode ser necessário passar os valores para o método e recuperar os resultados do método. C # tem parâmetros diferentes para conseguir isso. Os parâmetros de valor são usados ​​para passar parâmetros para o método por valor. Os parâmetros de referência são usados ​​para passar parâmetros para o método por referência. Os parâmetros de saída são usados ​​para retornar o resultado do método. Em C #, a palavra-chave out é usada para parâmetros de saída e a palavra-chave ref é usada para referenciar parâmetros. A diferença entre out e ref em C # é que, out é uma palavra-chave usada para referir um parâmetro de saída usado para passar resultados do método chamado para o método de chamada, enquanto ref é uma palavra-chave para referir um parâmetro de referência usado para transmitir dados de método de chamada para o método chamado e para receber os dados do método chamado para o método de chamada.

Faça o download do PDF de out vs ref em C #

Você pode fazer o download da versão em PDF deste artigo e usá-la para fins offline, conforme nota de citação. Faça o download da versão em PDF aqui: Diferença entre Saída e Referência em C #

Referência:

1.tutorialspoint.com. "Métodos C #". O ponto. Disponivel aqui 
2.dnfvideo. Parâmetros de saída C # versus parâmetros REF, vídeos de preparação para entrevistas do .NET, 28 de setembro de 2015. Disponível aqui  

Cortesia da imagem:

1.'C sharp'By Mothmolevna - Obra própria, (Domínio Público) via Commons Wikimedia