我想知道有什麼區別。目前我正在學習這個東西,它似乎對我來說,這些都是一樣的:Lambda表達與匿名方法
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 Expression vs. Anonymous Methods, Part One並繼續series的其餘部分。
唯一的區別是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
從語言的進化角度思考。在C#1中,我們有代表。在C#2中,他們添加了匿名方法。 C#3添加了lambda。更簡單的方法來完成類似的任務。有關進化的更多信息,我會鼓勵您查閱本書* C#深入介紹*。 – 2011-02-08 14:58:14