Linq之Lambda表示式初步認識

2021-08-09 20:50:43 字數 2340 閱讀 6963

寫在前面

匿名方法

乙個例子

lambda

定義乙個例子

總結參考文

章匿名方法顧名思義,是沒有名字的方法,但是仍有方法體,仍能幹活。在很多地方可能你都見過它,比如js中,用的最多!

看看msdn給的說法:

在 2.0 之前的 c# 版本中,宣告委託的唯一方法是使用命名方法。 c# 2.0 引入了匿名方法,而在 c# 3.0 及更高版本中,lambda 表示式取代了匿名方法,作為編寫內聯**的首選方式。 不過,本主題中有關匿名方法的資訊同樣也適用於 lambda 表示式。 有一種情況下,匿名方法提供了 lambda 表示式中所沒有的功能。 您可使用匿名方法來忽略引數列表。 這意味著匿名方法可轉換為具有各種簽名的委託。 這對於 lambda 表示式來說是不可能的。

乙個例子

1

namespace

wolfy.linqdemo2;

17}18}

19 }

通過使用匿名方法,由於您不必建立單獨的方法,因此減少了例項化委託所需的編碼系統開銷。

例如,執行緒類即可建立乙個執行緒並且包含該執行緒執行的**。

1             thread thread = new

thread(

2delegate()3

);

可以更直白的這樣理解,如果該方法就使用那麼一次,那麼就可以使用匿名方法。

定義

lambda 表示式是一種可用於建立委託或表示式目錄樹型別的匿名函式。

若要建立 lambda 表示式,需要在 lambda 運算子 => 左側指定輸入引數(如果有),然後在另一側輸入表示式或語句塊。

乙個例子

1

///2

///建立乙個委託del

3///

4///引數5

public

delegate

void del(int

x);6

class

program

714 }

若要建立表示式目錄樹,可以這樣:

1

///2

///建立乙個委託del

3///

4///引數5

public

delegate

void del(int

x);6

class

program

715 }

上面的例子建立了乙個表示式目錄樹物件expression,由於del委託是沒有返回值的,這裡是將其直接輸出。

表示式lambda

表示式位於 => 運算子右側的 lambda 表示式稱為「表示式 lambda」。表示式 lambda 會返回表示式的結果,並採用以下基本形式:?

1(input parameters) => expression

注意:僅當 lambda 只有乙個輸入引數時,括號才是可選的;否則括號是必需的。

1 (x, y) => x == y

1

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

2 (int x, string s) => s.length >x3//

使用空括號指定零個輸入引數

4 () => somemethod()

語句lambda

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

1 (input parameters) =>
statement(語句lambda)可以包含任意數量的語句,但通常不會多於兩個或三個。

乙個例子

1

namespace

wolfy.linqdemo2;

18 d("

wolfy");

19console.read();20}

21}22 }

注意

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

這裡對lambda及匿名方法做了乙個簡單介紹。雖然在專案中也經常使用,但是對lambda的基礎知識,還是需要補一補。

linq表示式對比lambda表示式

什麼是linq表示式?什麼是lambda表示式?前一段時間用到這個只是,在網上也沒找到比較簡單明瞭的方法,今天就整理了一下相關知識,有空了再仔細研究研究 public program ling表示式 var stus1 from s in allstudent where s.name 王二 sel...

LINQ和Lambda表示式

前段時間接觸了一種新的表示式,但是不知道這個是什麼意思,所以就先站在巨人的肩膀用了,現在聽師哥說這種寫法是 lambda 表示式。我一直以為,這個 lambda 表示式和 linq 查詢有異曲同工之妙,可惜,這樣想就大錯特錯了。定義語言整合查詢 language integrated query 允...

LINQ與Lambda表示式

是微軟提出的一項新技術 能將查詢功能直接引入到.net framwork所支援的程式語言中。查詢操作可以通過程式語言自身來傳達,而不用以字串形式嵌入到 中。主要包括linq to sql,linq to dataset,linq to objects和linq to xml4種技術。在c 後期版本中...