Дайте пример за използване на делегати в C#.
sobes.tech AI
Отговор от AI
Делегатите са типобезопасни указатели към методи. Те позволяват предаване на методи като аргументи, присвояване им към променливи и извикване чрез тези променливи. Делегатите се използват широко за създаване на събития, обратни повиквания и асинхронно програмиране.
Пример за използване на делегат:
-
Деклариране на делегат: Определяме подписа на метода, към който делегатът може да сочи.
public delegate int MyDelegate(int x, int y); -
Дефиниране на методи: Създаваме методи със съответстващ подпис на делегата.
public class Calculator { public int Add(int a, int b) { return a + b; } public int Subtract(int a, int b) { return a - b; } } -
Използване на делегат: Създаваме инстанция на делегата и й присвояваме метод. След това извикваме метода чрез делегата.
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, и след това използваме делегата за извикване на тези методи.