Делегат (программирование)
Делегат (англ. delegates) — безопасный указатель на функцию. Безопасный в том плане, что строго указаны тип возвращаемого значения и аргументы метода(сигнатура). Делегаты введены в C# и других языках технологии Microsoft .NET реализованной в виде платформы .NET Framework для определения прототипа функции обратного вызова. Делегаты, так же, можно назвать псевдонимом сигнатур методов.
Из объявления типа делегата компилятор генерирует класс, производный от System.MulticastDelegate. Таким образом, сигнатура функции, принимающей делегат в качестве аргумента, может выглядеть так:
<source lang="csharp"> public MyFunction (Delegate anotherFunction); </source>
Дополнительной особенностью делегатов является то, что их можно вызывать асинхронно асинхронный делегат, с помощью метода BeginInvoke(). В этом случае в пуле потоков ищется свободный и указанная функция выполняется параллельно в его контексте. Стоит однако отметить, что количество потоков в пуле ограничено (в текущей реализации .NET их 25), и остальные вызовы будут ждать своей очереди.
Пример объявления и использования делегата
<source lang="csharp"> 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");
}
} </source>
Пример выводит на консоль строку «Вызвана функция с параметром hello.».
См. также
Ссылки
| Информатика | Это незавершённая статья по информатике. Вы можете помочь проекту, исправив и дополнив её. |
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....