我想知道它们之间的区别。目前我正在学习这个东西,但对我来说它们似乎是完全相同的:
delegate void X();
X instanceOfX;
instanceOfX = delegate() { code };
instanceOfX = () => { code };
如果Lambda表达式是较新的语法,那我是否应该只使用Lambda表达式而忘记匿名方法?
我想知道它们之间的区别。目前我正在学习这个东西,但对我来说它们似乎是完全相同的:
delegate void X();
X instanceOfX;
instanceOfX = delegate() { code };
instanceOfX = () => { code };
如果Lambda表达式是较新的语法,那我是否应该只使用Lambda表达式而忘记匿名方法?
是的,lambda表达式只是一种非常特殊的匿名方法。
然而,它们之间有一些深层次的差异。可以从埃里克·利珀特(Eric Lippert)的Lambda Expression vs. Anonymous Methods, Part One开始,继续阅读该系列文章。
Expression<Func<void>>
。委托只是方法/闭包,但是 lambda 也可以分解为表达式树:Expression<Func<int, int>> expr = x => x*2; // Expression tree
Func<int, int> fun = x => x*2; // Function
delegate int MyDelegate(int x); // Delegate
MyDelegate del = x => x*2; // Same as Function and Delegate