lambda表示式是c#3.0的一種新語法,語法簡潔
為編寫匿名方法提供了更簡明的函式式的句法.
我通過乙個示例來說明lambda表示式的原理:
lambda表示式和匿名方法都**於委託
我們來看看委託的使用
在c#1.0時:
c#2.0時可以使用匿名方法:
c#3.0使用lambda表示式:
使用lambda表示式更簡潔,為什麼那麼簡潔.其實是編譯器為我們做了很多事情.
calculate result = (ta, tb) => ta + tb;
這句話 編譯器在編譯的時候 會為我們生成乙個私有的靜態方法.透過ildasm可以看到它是怎麼幫助我們的,
編譯器為我們宣告宣告了乙個私有靜態的calculate委託字段 和乙個靜態的私有方法.
通過il**可以看看main方法內部是怎麼實現的
可以看出il_0005: 到il_001f 這段**是初始化編譯器為我們生成的委託
下面幾行il指令可以看出來是為我們初始化委託
il_000c: ldnull //宣告乙個空的函式指標
il_000d: ldftn //載入方法指標 指向 'b__0'(int32,int32) 函式
il_0013: newobj //例項化委託
il_0018: stsfld //儲存
透過il** 我們看到了lambda表示式的的正真實現方法….
看到了c#語言沒有什麼改變 只是編譯器為我們完成了很多東西
關於lambda表示式
lambda函式也叫做匿名函式,就是說沒有具體名稱的函式。lambda只是乙個表示式,一般用來定義簡單的函式,不能共享給別的程式呼叫。lambda函式可以使用任何數量的引數,但只能有乙個表示式。會返回乙個函式物件,但這個物件不會賦給乙個識別符號。lambda函式可以在需要函式物件的任何地方使用。用法...
lambda表示式 lambda表示式
1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...
Lambda表示式和Lambda表示式樹
原版來自 linq學習筆記之二 lambda表示式和lambda表示式樹 lambda 表示式 lambda expressions 是linq實現的另一特性。lambda表示式的作用就是使用使用函式式語法,將方法實現關聯到委託例項。在使用查詢表示式 query expressions 時,查詢表示...