- Делегаты
-
Делегат (англ. delegates) — безопасный указатель на функцию. Безопасный в том плане, что строго указаны тип возвращаемого значения и аргументы метода(сигнатура). Делегаты введены в C# и других языках технологии Microsoft .NET реализованной в виде платформы .NET Framework для определения прототипа функции обратного вызова. Делегаты, так же, можно назвать псевдонимом сигнатур методов.
Из объявления типа делегата компилятор генерирует класс, производный от
System.Delegate
. Таким образом, сигнатура функции, принимающей делегат в качестве аргумента, может выглядеть так:public MyFunction (Delegate anotherFunction);
Дополнительной особенностью делегатов является то, что их можно вызывать асинхронно асинхронный делегат, с помощью метода
BeginInvoke()
. В этом случае в пуле потоков ищется свободный и указанная функция выполняется параллельно в его контексте. Стоит однако отметить, что количество потоков в пуле ограничено (в текущей реализации .NET их 25), и остальные вызовы будут ждать своей очереди.Пример объявления и использования делегата
using System; // Объявление делегата delegate void MyDelegate(string a); class DelegateExample { static void Func(string param) { System.Console.WriteLine("Вызвана функция с параметром {0}.", param); } public static void Main() { // Создание экземпляра делегата MyDelegate f = new MyDelegate(Func); // Вызов функции f("hello"); } }
Пример выводит на консоль строку «Вызвана функция с параметром hello.».
См. также
Ссылки
http://msdn2.microsoft.com/en-us/library/system.delegate.aspx
Wikimedia Foundation. 2010.