Lambda 表示式(一) 碼住

2021-07-24 15:25:25 字數 2225 閱讀 7519

lambda 表示式是一種可用於建立委託或表示式目錄樹型別的匿名函式。 通過使用 lambda 表示式,可以寫入可作為引數傳遞或作為函式呼叫值返回的本地函式。 lambda 表示式對於編寫 linq 查詢表示式特別有用。

若要建立 lambda 表示式,需要在 lambda 運算子 => 左側指定輸入引數(如果有),然後在另一側輸入表示式或語句塊。 例如,lambda 表示式 x => x * x 指定名為 x 的引數並返回 x 的平方值。 如下面的示例所示,你可以將此表示式分配給委託型別:

delegate int del(int i);

static

void main(string args)

若要建立表示式目錄樹型別:

c#using system.linq.expressions;

}}

=> 運算子具有與賦值運算子 (=) 相同的優先順序並且是右結合運算(參見「運算子」文章的「結合性」部分)。

lambda 在基於方法的 linq 查詢中用作標準查詢運算子方法(如 where)的引數。

使用基於方法的語法在 where 類中呼叫 enumerable 方法時(如在 linq to objects 和 linq to xml 中一樣),引數是委託型別system.func

表示式位於 => 運算子右側的 lambda 表示式稱為「表示式 lambda」。 表示式 lambda 廣泛用於表示式樹(c# 和 visual basic)的構造。 表示式 lambda 會返回表示式的結果,並採用以下基本形式:

(input parameters) => expression

僅當 lambda 只有乙個輸入引數時,括號才是可選的;否則括號是必需的。 括號內的兩個或更多輸入引數使用逗號加以分隔:

(x, y) => x == y
有時,編譯器難以或無法推斷輸入型別。 如果出現這種情況,你可以按以下示例中所示方式顯式指定型別:

(int x, string s) => s.length > x
使用空括號指定零個輸入引數:

() => somemethod()
在上乙個示例中,請注意表示式 lambda 的主體可以包含乙個方法呼叫。 但是,如果要建立在 .net framework 之外計算的表示式目錄樹(例如,在 sql server 中),則不應在 lambda 表示式中使用方法呼叫。 在 .net 公共語言執行時上下文之外,方法將沒有任何意義。

語句 lambda 與表示式 lambda 表示式類似,只是語句括在大括號中:

(input parameters) =>
語句 lambda 的主體可以包含任意數量的語句;但是,實際上通常不會多於兩個或三個。

delegate

void testdelegate(string s);

testdelegate mydel = n => ;

mydel("hello");

像匿名方法一樣,語句 lambda 同樣不能用於建立表示式目錄樹。

通過使用 async 和 await 關鍵字,你可以輕鬆建立包含非同步處理的 lambda 表示式和語句。 例如,下面的 windows 窗體示例包含乙個呼叫和等待非同步方法 examplemethodasync 的事件處理程式。

public

partial

class form1 : form

private

async

void

button1_click(object sender, eventargs e)

async task examplemethodasync()

}

你可以使用非同步 lambda 新增同一事件處理程式。 若要新增此處理程式,請在 lambda 引數列表前新增乙個 async 修飾符,如下例所示。

public

partial

class form1 : form

; }

async task examplemethodasync()

}

有關如何建立和使用非同步方法的詳細資訊,請參閱使用 async 和 await 的非同步程式設計(c# 和 visual basic)。

向微軟的大大們低頭!

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...

Lambda表示式(一)

是什麼 為什麼要用 怎麼用?語法 答 lambda表示式是具有引數和主體的未命名函式。lambda表示式主體可以是block語句或表示式。lambda表示式使我們能夠以緊湊的方式傳遞邏輯。使用lambda表示式的一般語法是 parameters 分隔引數和lambda表示式主體。引數用括號括起來,這...

Lambda表示式和Lambda表示式樹

原版來自 linq學習筆記之二 lambda表示式和lambda表示式樹 lambda 表示式 lambda expressions 是linq實現的另一特性。lambda表示式的作用就是使用使用函式式語法,將方法實現關聯到委託例項。在使用查詢表示式 query expressions 時,查詢表示...