Sobes.tech
Junior
150
questionbank

Приведите пример использования делегатов в C#.

Answer from AI

sobes.tech 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 x, int y) и возвращает целое число (int). Мы создаем два экземпляра делегата (del), присваиваем им методы Add и Subtract соответственно, а затем используем делегат для вызова этих методов.