Sobes.tech
Junior

Forneça um exemplo de uso de delegados em C#.

sobes.tech IA

Resposta da IA

Os delegados são ponteiros seguros de tipo para métodos. Permitem passar métodos como argumentos, atribuí-los a variáveis e chamá-los através dessas variáveis. Os delegados são amplamente utilizados para criar eventos, callbacks e programação assíncrona.

Exemplo de uso de um delegado:

  1. Declaração do delegado: Definimos a assinatura do método ao qual o delegado pode apontar.

    public delegate int MyDelegate(int x, int y);
    
  2. Definição de métodos: Criamos métodos com assinatura correspondente ao delegado.

    public class Calculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    
        public int Subtract(int a, int b)
        {
            return a - b;
        }
    }
    
  3. Uso do delegado: Criamos uma instância do delegado e atribuímos um método. Depois, chamamos o método através do delegado.

    public class Program
    {
        public static void Main(string[] args)
        {
            Calculator calc = new Calculator();
    
            // Criar uma instância do delegado e atribuir o método Add
            MyDelegate del = new MyDelegate(calc.Add);
    
            // Chamar o método Add através do delegado
            int result1 = del(10, 5); // result1 = 15
            Console.WriteLine($"Resultado da soma: {result1}");
    
            // Reatribuir o delegado ao método Subtract
            del = calc.Subtract;
    
            // Chamar o método Subtract através do delegado
            int result2 = del(10, 5); // result2 = 5
            Console.WriteLine($"Resultado da subtração: {result2}");
        }
    }
    

Neste exemplo, MyDelegate pode apontar para qualquer método que aceite dois argumentos inteiros (int x, int y) e retorne um inteiro (int). Criamos duas instâncias do delegado (del), atribuindo-lhes os métodos Add e Subtract, e depois usamos o delegado para chamar esses métodos.