#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. Поэтому этот код компилируется успешно.
Комментариев нет:
Отправить комментарий