Делегаты
Делегат – это особый тип указателя на функцию, обеспечивающий передачу фрагмента кода как объекта. Ключевое слово delegate позволяет определить тип для функций с заданной сигнатурой. Например, для функций, принимающих целочисленный аргумент и не возвращающих значения, можно создать тип-делегат:
delegate void DlgType( int a );
После этого делегат используется следующим образом:
void fun1( int a ) { stdout.printf("%d\n",a); } // требуемая сигнатура
...
void fun2( DlgType d, int a ) // функция использует делегат
{
d(a);
}
...
fun2( fun1, 3 );
При вызове функции fun2 ей передаётся указатель на функцию fun1 и числовое значение 3. Далее в теле fun2 вызывается через делегата функция fun1, которой передаётся числовое значение.
Также вы можете создавать локальные переменные этого типа:
DlgType d1 = fun1; // инициализация ссылкой на функцию с требуемой сигнатурой
DlgType d2 = (a)=>{stdout.printf("%d\n",a);} // инициализация ссылкой на ламбда-функцию
Last updated
Was this helpful?