Junior
Какво може да съдържа делегат в C#?
sobes.tech AI
Отговор от AI
Делегат в C# е тип, който представлява препратки към методи с конкретна сигнатура (тип на връщане и типове параметри). Той може да съдържа:
- Препратка към статичен метод:
// Статичен метод public static void StaticMethod(int x) { } // Делегат, който препраща към статичен метод MyDelegate d = StaticMethod; - Препратка към метод на инстанция:
// Клас с метод на инстанция public class MyClass { public void InstanceMethod(int y) { } } // Създаване на инстанция на класа MyClass obj = new MyClass(); // Делегат, който препраща към метод на инстанция MyDelegate d = obj.InstanceMethod; - Списък за извикване (invocation list) на няколко метода: Делегатът в C# всъщност е мултиканален. Той може да съдържа препратки към няколко метода. При извикване на такъв делегат, се извикват всички методи в списъка в реда на добавянето им.
public delegate void MyDelegate(int value); public static void Method1(int z) { } public static void Method2(int w) { } // Създаване на мултиканален делегат MyDelegate multiDelegate = Method1; multiDelegate += Method2; // Добавяне на втори метод // Извикването на делегата извиква и двата метода multiDelegate(10);