2011-02-08 131 views
26

我想知道有什麼區別。目前我正在學習這個東西,它似乎對我來說,這些都是一樣的:Lambda表達與匿名方法

delegate void X(); 

X instanceOfX; 

instanceOfX = delegate() { code }; 

instanceOfX =() => { code }; 

此外,如果拉姆達是新的,我應該只使用Lambda和匿名方法忘了?

+3

從語言的進化角度思考。在C#1中,我們有代表。在C#2中,他們添加了匿名方法。 C#3添加了lambda。更簡單的方法來完成類似的任務。有關進化的更多信息,我會鼓勵您查閱本書* C#深入介紹*。 – 2011-02-08 14:58:14

回答

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