Sobes.tech
Junior

Дайте пример за използване на делегати в C#.

sobes.tech AI

Отговор от AI

Делегатите са типобезопасни указатели към методи. Те позволяват предаване на методи като аргументи, присвояване им към променливи и извикване чрез тези променливи. Делегатите се използват широко за създаване на събития, обратни повиквания и асинхронно програмиране.

Пример за използване на делегат:

  1. Деклариране на делегат: Определяме подписа на метода, към който делегатът може да сочи.

    public delegate int MyDelegate(int x, int y);
    
  2. Дефиниране на методи: Създаваме методи със съответстващ подпис на делегата.

    public class Calculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    
        public int Subtract(int a, int b)
        {
            return a - b;
        }
    }
    
  3. Използване на делегат: Създаваме инстанция на делегата и й присвояваме метод. След това извикваме метода чрез делегата.

    public class Program
    {
        public static void Main(string[] args)
        {
            Calculator calc = new Calculator();
    
            // Създаване на инстанция на делегата и присвояване на метода Add
            MyDelegate del = new MyDelegate(calc.Add);
    
            // Извикване на метода Add чрез делегата
            int result1 = del(10, 5); // result1 = 15
            Console.WriteLine($"Резултат от събиране: {result1}");
    
            // Присвояване на делегата към метода Subtract
            del = calc.Subtract;
    
            // Извикване на метода Subtract чрез делегата
            int result2 = del(10, 5); // result2 = 5
            Console.WriteLine($"Резултат от изваждане: {result2}");
        }
    }
    

В този пример, MyDelegate може да сочи към всеки метод, който приема два аргумента от тип int (int x, int y) и връща int. Създаваме две инстанции на делегата (del), като им присвояваме методите Add и Subtract, и след това използваме делегата за извикване на тези методи.