Делегат (программирование)

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Делегат (англ. delegates) — безопасный указатель на функцию. Безопасный в том плане, что строго указаны тип возвращаемого значения и аргументы метода(сигнатура). Делегаты введены в C# и других языках технологии Microsoft .NET реализованной в виде платформы .NET Framework для определения прототипа функции обратного вызова. Делегаты, так же, можно назвать псевдонимом сигнатур методов.

Из объявления типа делегата компилятор генерирует класс, производный от System.MulticastDelegate. Таким образом, сигнатура функции, принимающей делегат в качестве аргумента, может выглядеть так:

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.».

См. также

Ссылки


de:Delegat (.NET)

en:Delegate (.NET) ja:デリゲート (プログラミング)

Личные инструменты

Served in 0.074 secs.