Страницы

Поиск по вопросам

пятница, 28 февраля 2020 г.

C# делегаты и анонимные функции

#c_sharp #делегаты #анонимная_функция


Имеется следующий блок кода : 

delegate int StrMod(int a);
static void main()
{
StrMod strmod = delegate{return 10;};
Console.WriteLine(strmod(5));
}


Консоль:


  10


Почему на 4 строку компилятор не ругается? Ведь входные параметры анонимной функции
не соответствуют параметрам делегата.
    


Ответы

Ответ 1



Вы здесь объявляете делегат с помощью анонимного метода. StrMod strmod = delegate{return 10;}; Согласно документации об анонимных методах, у анонимного метода допускается опускать список параметров, если они вам не нужны внутри метода(в отличии от лямбд выражений, где список параметров нужно указывать всегда явно). В этом случае, анонимный метод может быть преобразован к делегату с различной сигнатурой. Anonymous methods enable you to omit the parameter list. This means that an anonymous method can be converted to delegates with a variety of signatures. Поэтому этот код компилируется успешно.

Комментариев нет:

Отправить комментарий