Lambda表达式与匿名方法

时间:2011-02-08 14:54:38

标签: c# lambda anonymous-methods

我想知道有什么区别。目前我正在学习这些东西,在我看来,这些都是一样的:

delegate void X();

X instanceOfX;

instanceOfX = delegate() { code };

instanceOfX = () => { code };

另外如果lambda更新,我应该只使用lambda并忘记匿名方法吗?

2 个答案:

答案 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