寫在前面
匿名方法
乙個例子
lambda
定義乙個例子
總結參考文
章匿名方法顧名思義,是沒有名字的方法,但是仍有方法體,仍能幹活。在很多地方可能你都見過它,比如js中,用的最多!
看看msdn給的說法:
在 2.0 之前的 c# 版本中,宣告委託的唯一方法是使用命名方法。 c# 2.0 引入了匿名方法,而在 c# 3.0 及更高版本中,lambda 表示式取代了匿名方法,作為編寫內聯**的首選方式。 不過,本主題中有關匿名方法的資訊同樣也適用於 lambda 表示式。 有一種情況下,匿名方法提供了 lambda 表示式中所沒有的功能。 您可使用匿名方法來忽略引數列表。 這意味著匿名方法可轉換為具有各種簽名的委託。 這對於 lambda 表示式來說是不可能的。乙個例子
1namespace
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上面的例子建立了乙個表示式目錄樹物件expression,由於del委託是沒有返回值的,這裡是將其直接輸出。///2
///建立乙個委託del
3///
4///引數5
public
delegate
void del(int
x);6
class
program
715 }
表示式lambda
表示式位於 => 運算子右側的 lambda 表示式稱為「表示式 lambda」。表示式 lambda 會返回表示式的結果,並採用以下基本形式:?
1(input parameters) => expression
注意:僅當 lambda 只有乙個輸入引數時,括號才是可選的;否則括號是必需的。
1 (x, y) => x == y
1語句lambda//有時,編譯器難以或無法推斷輸入型別。 如果出現這種情況,你可以按以下示例中所示方式顯式指定型別
2 (int x, string s) => s.length >x3//
使用空括號指定零個輸入引數
4 () => somemethod()
語句 lambda 與表示式 lambda 表示式類似,只是語句括在大括號中
1 (input parameters) =>statement(語句lambda)可以包含任意數量的語句,但通常不會多於兩個或三個。
乙個例子
1namespace
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 後期版本中...