Sobes.tech
Junior

Podaj przykład użycia delegatów w C#.

sobes.tech AI

Odpowiedź od AI

Delegaty są bezpiecznymi typowo wskaźnikami na metody. Pozwalają na przekazywanie metod jako argumentów, przypisywanie ich do zmiennych i wywoływanie przez te zmienne. Delegaty są szeroko używane do tworzenia zdarzeń, wywołań zwrotnych i programowania asynchronicznego.

Przykład użycia delegata:

  1. Deklaracja delegata: Definiujemy sygnaturę metody, na którą może wskazywać delegat.

    public delegate int MyDelegate(int x, int y);
    
  2. Definicja metod: Tworzymy metody o sygnaturze odpowiadającej delegatowi.

    public class Calculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    
        public int Subtract(int a, int b)
        {
            return a - b;
        }
    }
    
  3. Użycie delegata: Tworzymy instancję delegata i przypisujemy mu metodę. Następnie wywołujemy metodę przez delegata.

    public class Program
    {
        public static void Main(string[] args)
        {
            Calculator calc = new Calculator();
    
            // Tworzymy instancję delegata i przypisujemy mu metodę Add
            MyDelegate del = new MyDelegate(calc.Add);
    
            // Wywołujemy metodę Add przez delegata
            int result1 = del(10, 5); // result1 = 15
            Console.WriteLine($"Wynik dodawania: {result1}");
    
            // Przypisujemy delegat do metody Subtract
            del = calc.Subtract;
    
            // Wywołujemy metodę Subtract przez delegata
            int result2 = del(10, 5); // result2 = 5
            Console.WriteLine($"Wynik odejmowania: {result2}");
        }
    }
    

W tym przykładzie MyDelegate może wskazywać na dowolną metodę, która przyjmuje dwa argumenty typu int (int x, int y) i zwraca wartość typu int. Tworzymy dwie instancje delegata (del), przypisując im metody Add i Subtract, a następnie używamy delegata do wywołania tych metod.