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

209
14 июля 2018, 18:30

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

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

Консоль:

10

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

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

Поэтому этот код компилируется успешно.

READ ALSO
c# график функции

c# график функции

Нужно построить Y=4*X+8*COS(4*X) Однако получается не очень правдоподобноКак подобрать параметры?

235
C# WPF AvalonDock

C# WPF AvalonDock

Устанавливаю AvalonDock через NuGet и все нормально работает, но я бы хотел использовать source code в проектеКопирую классы и все остальное и VS 2017 видит...

219