關於Lambda表示式

2021-05-22 21:34:25 字數 779 閱讀 1665

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 時,查詢表示...