是什麼匿名方法的C#2.0和拉姆達之間的差異表達式的C#3.0?匿名方法(C#2.0)和lambda表達式(C#3.0)之間的區別是什麼?
回答
The MSDN page on anonymous methods explains it
在C#2.0版本之前,聲明委託的唯一 方法是使用 命名方法。 C#2.0引入了 匿名方法,並在C#3.0和 之後,lambda表達式取代了 匿名方法,作爲首選方式 來編寫內聯代碼。但是,有關 中的匿名方法的信息 此主題也適用於lambda 表達式。在 中有一個案例,其中匿名方法提供了 功能,該功能在lambda 表達式中找不到。匿名方法使您可以省略參數列表 ,並且 這意味着可以將具有 各種簽名的匿名方法 轉換爲委託。對於lambda表達式,這不是 。有關 更多有關 lambda表達式的信息,請參閱Lambda 表達式(C#編程指南)。
And regarding lambda expressions:
lambda表達式是一個可以包含表達式和語句,並且可以用於創建代表或表達式樹類型的匿名函數。 所有的lambda表達式都使用lambda運算符=>,它被讀作「去往」。 lambda運算符的左側指定輸入參數(如果有的話),右側保存表達式或語句塊。 lambda表達式x => x * x被讀取爲「x轉到x次x」。該表達式可以如下分配給代表類型:
首先,方便性:lambda表達式更易於讀寫。
二,表達式:lambda表達式可被編譯到任委託,或表達式樹(Expression<T>
一些代表類型T,如Func<int,bool>
)。表達式樹更令人興奮,因爲它是LINQ處理數據存儲的關鍵。
Func<int,bool> isEven = i => i % 2 == 0;
Expression<Func<int,bool>> isEven = i => i % 2 == 0;
注意with語句機構lambda表達式只能被編譯爲代表,不Expression
S:
Action a =() => { Console.WriteLine(obj.ToString()); };
- 匿名方法的基本功能是沒有名字的,有創造封鎖的能力。
- Lambda表達式是可轉換爲匿名方法和表達式樹的構造,並遵循比匿名方法更復雜的類型推斷規則。
或多或少細微的差別的範圍由埃裏克利珀(C#語言設計師)在他的博客中解釋說:
- Lambda表達式可以轉換爲委託或表達式樹(有一些限制);匿名方法只能被轉換爲代表
- Lambda表達式允許對參數類型推斷:無括號
- Lambda表達式允許身體被截斷爲只是一個表達式(返回一個值),或單一語句(在其他情況下) 。
- Lambda表達式允許將參數列表縮短爲僅當參數名稱可以推斷時以及只有一個參數時的參數列表。匿名方法允許參數列表在主體內未使用時完全省略並且不會導致歧義
最後一點是匿名方法相對於lambda表達式的唯一好處,我相信。這是非常有用的一個無操作訂閱雖然創建一個類似字段的事件:
你應該有一個「真棒」徽章public event EventHandler Click = delegate{};
- 1. c的表達式和C++的表達式之間的區別
- 2. ActionScript 2.0和ActionScript 3.0之間的區別是什麼
- 3. 語法和s表達式之間的區別是什麼
- 4. Symbian C++和規範C++之間的語法區別是什麼?
- 5. 匿名方法與lambda表達式
- 6. 有什麼不對乘法下面的lambda表達式(C#3.0)
- 7. ActionScript 2.0和3.0之間的區別...?
- 8. 什麼是此lambda表達式的C#2.0等效代碼
- 9. 什麼是C#中的匿名方法?
- 10. 正則表達式中(。*)和(。*?)之間的區別是什麼?
- 11. proc和lambda之間有什麼區別?
- 12. C和%之間有什麼區別?
- 13. - >和>之間的區別是什麼。在C/C++?
- 14. Func <>與代表和lambda表達式之間的區別
- 15. 在c#中創建一個事件和匿名方法之間的區別#
- 16. 什麼是轉換lambda表達式或匿名函數到C#中委託對象的最直接的方法?
- 17. Lambda表達式和動作之間的區別
- 18. 正則表達式中方括號和括號之間的區別是什麼?
- 19. C#和JavaScript正則表達式之間的區別?
- 20. Lambda表達與匿名方法
- 21. C#和MVC中System.Environment.Username和User.Identity.Name之間的區別是什麼?
- 22. 這三個正則表達式之間的區別是什麼
- 23. Objective-C中方法簽名和選擇器之間有什麼區別?
- 24. 'Lambda格式'之間的區別究竟是什麼?
- 25. 代理服務器和匿名者之間有什麼區別?
- 26. lambda表達式,C中的匿名函數代表#
- 27. 「。」之間的區別和 「$」 表達式
- 28. C++ lambda表達式的方法鏈
- 29. java的sleep()和c的sleep()之間的區別是什麼?
- 30. kohana 3.0.x和3.1.0之間的主要區別是什麼?
.. – nawfal 2013-12-20 14:09:14