C# passe por referência

C# passe por referência
Enquanto trabalha em alguma programação orientada a objetos, você pode ter tentado o conceito de passagem de valor por referência nos códigos, eu.e. C, c++. Passe por meios de referência para indicar a localização da memória de uma determinada variável sem criar suas cópias. As referências provavelmente são usadas para executar certas mudanças e fazê -las refletir no local da memória original sem nenhum problema. Tendemos a usar o caractere "&" em idiomas orientados a objetos para realizar referências passadas.

Dentro de C#, executamos os valores passantes por referência usando a palavra -chave "REF". Vamos ver como isso funciona. Começando com a implementação deste guia, devemos ter um arquivo C# para criar alguns códigos de programação nele. Até agora tudo bem; Temos usado a consulta "Touch" do Ubuntu para gerar um novo arquivo C# no diretório de trabalho atual do nosso sistema Linux.

Exemplo 01

Iniciaremos nosso primeiro exemplo deste código com a definição de estrutura do programa C#. Então, abrimos o C#, criamos um arquivo no editor de texto interno do Ubuntu 20.04, e adicionou a biblioteca "System" em sua primeira linha. Esta biblioteca é a principal fonte de entrada e saída dentro dos códigos C#. Sem esta biblioteca, nosso código não tem utilidade para nós porque não funcionará da maneira que queremos. Então, depois de adicionar a biblioteca, criamos um espaço de nome de nome aleatório "referência" neste código. Este espaço para nome é definido pelo usuário.

Também criamos uma nova classe definida pelo usuário, "Referência", neste programa para inicializar nosso código com alguma implementação. Esta classe de "referência" definida pelo usuário contém um total de 2 funções. A primeira função é a função principal integrada com o tipo de retorno "estático vazio", que também é considerado a função do motorista do nosso código C#, i i.e. toda a execução começa a partir disso. A outra função é uma função aleatória definida pelo usuário chamada "Update", tendo o tipo de retorno "vazio estático público".

O console.A função WriteLine () está aqui para exibir o valor original de uma variável "n" utilizando seus parâmetros como mostrado abaixo na imagem. Depois disso, chamamos a função de "atualização" da variável de passagem principal "n" como um valor paramétrico. Agora, o controle vai para a função "atualização", que tem tomado o valor da variável "n" como uma referência usando a nova variável "val" do tipo inteiro. Essa variável "val" multiplicará seu valor passado "5" da função principal () por "3" e substituirá a variável "Val".

Não há declaração de devolução aqui. A execução da função de atualização foi concluída e o controle está de volta à função "principal". A função principal () executa seu próximo console.Função writeLine () para exibir o valor atualizado da variável "n" usando "n" em seus parâmetros. A função principal () e nosso código C# estão completos e prontos para serem usados. Vamos salvá -lo por ctrl+s e sair com Ctrl+x primeiro.

Depois de salvar o arquivo C#, a primeira etapa que temos que dar é compilar esse código com o compilador "MCS" do C# já configurado em nosso Ubuntu 20.04 Sistema. Então, fizemos isso, e o arquivo "exe" para este código compilado foi criado automaticamente no mesmo local. Utilizamos a instrução de execução de tempo de execução "mono" para os códigos C# para executar esse arquivo "exe" e obtivemos o resultado mostrado. Acontece que o valor original e o valor atualizado são os mesmos, eu.e. Nenhuma mudança foi feita até agora.

Vamos verificar o problema agora. Quando tentamos atualizar o valor da variável "n", passando como uma referência, ele não localiza o endereço de memória da variável original "n". Em vez disso, criou outro objeto de réplica com o mesmo nome e valor e o passou para a função de atualização. Assim, as alterações feitas no novo objeto não afetam a variável original "n" valor.

Para evitar esse problema, a estrutura C# surgiu com a nova palavra -chave “referência” para passar valores como uma referência a qualquer parâmetro de função. Usando essa palavra -chave "REF", a localização da memória variável original foi usada em vez do novo endereço de memória, i i.e. apontando para a localização da memória da variável original. Assim, atualizamos nosso código e usamos a palavra -chave 'ref' ao passar a variável “n” como uma referência à função de atualização. Essa palavra -chave foi usada na função principal () enquanto a chamada de função para a função "atualização" e na função "update ()", conforme exibido.

Depois de compilar o arquivo C# atualizado e executar seu "exe" logo depois disso, recebemos a saída mostrada. Desta vez, o valor “5” da variável “n” foi atualizado para “15” devido ao uso da palavra -chave “ref” para passar um valor como referência.

Exemplo 02

Vejamos outro exemplo para executar a troca passando valores em parâmetros. A classe "teste" tem usado uma função "swap" definida pelo usuário e a função do driver principal (). A execução começou no método Main (), onde criamos um objeto "T" do teste de classe e inicializamos duas variáveis ​​inteiras, V1 e V2, com valores inteiros-o console.Declarações de função writeLine () exibem os valores das variáveis ​​v1 e v2 antes da troca.

Depois disso, a função de troca é chamada pela passagem de variáveis ​​v1 e v2 em seus parâmetros como referência. A palavra -chave "REF" foi utilizada aqui para ambas as variáveis. Dentro da implementação da função de "atualização", também usamos a palavra -chave "REF" para ambas as variáveis ​​N1 e N2 para aprovar valores por referência. Para trocar os valores de uma variável por outra, devemos ter um terceiro valor para executar isso. A nova variável "V" foi inicializada nessa função, tomando o valor da variável n1 como a primeira parte. O valor de N2 foi substituído na variável n1 e o valor da variável v foi salvo na variável n2. A troca de valor N1 com N2 foi feita aqui. O console de função principal ().A função WriteLine () está aqui para exibir os valores recém -trocados de N1 e N2.

Após a compilação e execução deste código de exemplo, temos valores de V1 e V2 como 14 e 7 antes da troca. Após a troca, acaba sendo o oposto, eu.e. v1 = 7 e v2 = 14.

Se removermos a palavra -chave "REF" da chamada de função e a definição de função da função "Atualização", como fizemos abaixo, a troca não será executada.

Aqui você pode ver a saída mostra que os valores de V1 e V2 são os mesmos, mesmo depois de usar a função de swap.

Conclusão

Este guia é sobre o uso da palavra -chave "REF" em C# para executar valores passantes por uma referência. Esta referência foi feita usando a localização exata da memória de determinadas variáveis. Dentro deste guia, discutimos o uso da palavra -chave "REF" para atualizar o valor original de uma variável, multiplicando -a com algum número e trocando os valores de duas variáveis ​​em dois exemplos diferentes. Isso foi realizado muito bem com "referência".