Подтвердить что ты не робот

Лямбда-выражение против анонимных методов

Я хотел бы знать, в чем разница. В настоящее время я изучаю этот материал, и мне кажется, что они такие же:

delegate void X();

X instanceOfX;

instanceOfX = delegate() { code };

instanceOfX = () => { code };

Также, если лямбда новее, следует ли использовать лямбда и забыть анонимные методы?

4b9b3361

Ответ 2

Единственное отличие заключается в том, что лямбда может быть легко перенесена на Expression<Func<void>>. Делегаты - это чисто методы/замыкания, но лямбда а также разбивается на дерево выражений:

Expression<Func<int, int>> expr = x => x*2; // Expression tree
Func<int, int> fun = x => x*2;              // function
delegate int MyDelegate(int x);
MyDelegate del = x => x*2;             // Same as function, delegate