Se você já usou ponteiros em qualquer linguagem de programação, pode ter uma idéia sobre a referência. C# delegados funcionam da mesma forma que os ponteiros. Assim como fazemos referência às funções usando ponteiros, podemos usar delegados para referenciar a função em C#. Os delegados são construídos propositadamente para criar funções de devolução e adicionar eventos. Isso significa que um delegado pode decidir qual método será executado em que momento em C#. Os delegados nos ajudam a encapsular as funções e podem executar mais de duas funções para um evento solo. Os delegados têm tipos personalizados e de ação. Neste guia, decidimos cobrir seus tipos e especialmente o tipo de "ação". Vamos começar com a criação de arquivos C# no shell para dar uma olhada nos delegados.
Exemplo # 01:
Sem dar uma olhada no delegado personalizado, não podemos entender a importância do delegado de ação em C#. Neste exemplo, discutiremos o delegado personalizado primeiro. Temos usado a biblioteca "sistema" no código com a palavra -chave "usando". Esta biblioteca é um item obrigatório em todos os códigos C# porque nos faz usar muitas funções e instruções de uso padrão no código C#.
Sem esta biblioteca, nosso código não tem utilidade para nós porque não mostrará os resultados necessários. Inicializamos uma nova classe chamada "teste" com duas funções. Uma dessas funções é a função principal () do código C# e é um must-have em cada código. Sem essa função, nenhuma outra parte do código C# é executada. Outra função é a função "calcular" definida pelo usuário, que será usada para executar alguns cálculos em variáveis. A execução começa no método principal ().Antes disso, temos que descrever a declaração de um delegado personalizado que é definido na primeira linha do teste de classe.
Definimos um delegado chamado "personalizado" com dois argumentos do tipo inteiro (i.e. x e y), referenciando o mesmo nome e tipo de função de argumento no código. Este delegado é de modificador de acesso "público" e iniciado com a palavra -chave "Delegate" seguida pelo tipo "vazio". Como a função calcular tem o mesmo nome e tipos de argumentos, esse delegado deve estar referenciando a função "calcular". Dentro do método Main (), criamos um objeto "A" do delegado "personalizado" para referenciar a função "calcular". Agora, para passar valores para a função "calcular", usaremos o objeto "a" do delegado personalizado (i.e. 14 e 7.) Agora, quando um valor é passado, a função calcular será executada usando esses valores. Existem 4 console.Declarações de função writeLine () são usadas na função Calcular para executar diferentes operações (i.e. A soma e subtração de 2 valores, multiplicação de 2 valores e divisão de dois valores usando x e y.)
Isso é tudo sobre o uso de delegado personalizado em C#. Agora vamos compilar esse código C# no terminal do Linux com a ajuda de um compilador C# "MCS". Depois de compilá -lo, o compilador criará um arquivo "exe" para execução. Agora, precisamos usar esse arquivo "exe" no terminal com a instrução "mono" para executar nosso código. Acontece que o delegado funciona, como um objeto de classe, é referenciado para a função calcular para passar seus valores e calcular a soma, subtração, multiplicação e resultado da divisão I.e. 21, 7, 98 e 2, respectivamente.
Exemplo # 02:
O delegado de ação nos salva de definir o delegado personalizado no código e não retorna um valor. Além disso, reduz o tamanho de um código também. Digamos, como podemos usar um delegado de ação neste código de exemplo? Então, temos iniciado a mesma estrutura de código de C# aqui usando a biblioteca "System" e a classe "Teste". Depois disso, adicionamos 2 funções (i.e. Função calcular definida pelo usuário e a função principal () integrada.)
Dentro da função Calcular, usamos os mesmos 4 console.Declarações de função writeLine () para calcular a soma, subtração, multiplicação e valor de divisão de variáveis “x” e “y” do tipo inteiro. Enquanto a função principal () contém a inicialização de um delegado de ação "A" com a palavra -chave "ação" seguida pelos caracteres "" especificando os tipos de retorno para valores paramétricos passados por este delegado à função Calcular. Agora, a função de calcular se torna a referência do delegado de ação "a" e nós a usamos para passar dois valores 7 e 14 para a função "calcular" sem chamá -la. Você pode ver que não precisamos declarar um delegado de ação como fizemos para o costume e também reduziu um pouco o tamanho de um código. Vamos salvar este código e usá -lo na execução.
Após a compilação deste código e a execução de seu arquivo "exe", obtivemos o mesmo resultado para soma e multiplicação, enquanto um pouco diferente para subtração e divisão. Os delegados personalizados e de ação funcionam de maneira semelhante, mas precisamos definir o delegado personalizado primeiro.
Exemplo # 03:
Vamos ver como um delegado de ação reage quando usamos uma declaração de retorno no código. Então, atualizamos nosso código e adicionamos a função calcular e main (). Dentro do principal () deste código, criamos um delegado de ação "a" de dois parâmetros inteiros para referenciar a função de calcular. Um objeto delegado de ação "A" é usado para passar dois números inteiros para a função Calcular sem chamar a função de calcular e inicializar um "s" para obter o resultado calculado de volta no principal ().
O console.A função WriteLine () foi usada para exibir o valor retornado da função Calcular a ser exibida em nossa tela de casca. Dentro da função Calcular, inicializamos uma variável inteira "soma" calculando a soma de dois valores usando duas variáveis "x" e "y". Depois de calcular a soma, retornamos a variável "soma" para a função principal (). Agora, esperamos que isso nos dê um erro na compilação.
Então, depois de compilar o “delegado.Arquivo CS ”com o compilador de C#, temos um erro.
Vamos atualizar o código para ver o uso diferente do delegado de ação. Então, adicionamos uma função main () simples na classe de teste. Temos inicializando um delegado de ação "a" dentro dele seguido pelo parâmetro do tipo de string. Para fazer referência a alguma variável de string, precisamos usar o delegado de palavra -chave seguido pelo nome de uma variável e seu tipo nos parâmetros (i.e. "S".) O console.A instrução writeLine () exibirá o valor de uma string. Fora da função Main (), chamamos de delegado de ação e passamos por um valor de string "Hello World".
Depois de compilar e executar nosso código, ele exibiu nossa string usando o delegado de ação "a".
Conclusão:
Este artigo demonstra o conceito de delegados com alguns de seus exemplos. Estudamos o uso e a estrutura dos delegados personalizados para que possamos compará -los com os delegados de ação. Além disso, discutimos alguns exemplos para o uso de delegados de ação e explicamos como os delegados de ação são diferentes dos delegados personalizados, como eles podem reduzir o tamanho de um código e como ele reage à declaração de devolução.