我想知道有什么区别。目前我正在学习这些东西,在我看来,这些都是一样的:
delegate void X();
X instanceOfX;
instanceOfX = delegate() { code };
instanceOfX = () => { code };
另外如果lambda更新,我应该只使用lambda并忘记匿名方法吗?
答案 0 :(得分:20)
是的,lambda表达式只是非常特殊的匿名方法。
然而,存在一些深刻的差异。从Eric Lippert的Lambda Expression vs. Anonymous Methods, Part One开始,继续series的其余部分。
答案 1 :(得分:3)
唯一的区别是lambda可以很容易地转换为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);
MyDelegate del = x => x*2; // Same as function, delegate