Lambda表示式與匿名方法和委託直接的關係

2021-05-21 22:05:48 字數 805 閱讀 9192

=> 讀作「匯出」goes to,個人認為匯出翻譯的不好。

lambda 表示式有兩種,expression lambda 和 statement lambda。也就是說lambda表示式不光支援表示式,還支援大括號括起來的任意多條語句。如:

x => x+1

x =>

(x, y) => x*y

與匿名方法的關係:

在功能上,lambda表示式是匿名方法的乙個超集。lambda還提供了一些額外的功能:

lambda表示式能推測出引數的型別,程式中無需宣告引數型別。

lambda表示式支援用語句塊或者表示式作為方法體。

在以引數傳遞時, lambda表示式能夠判斷引數型別,並選擇過載的方法。

lambda表示式能夠轉化為表示式樹。

與委託的關係:

如滿足下面3個條件,lambda表示式與委託型別相容:

lambda表示式與委託型別的引數個數相同。

lambda表示式的每個引數都能被隱式的轉換為委託型別的引數型別。

lambda表示式的返回值能夠被隱式的轉換為委託型別的返回值。 如:

funcgetdatetime = () => datetime.now;      //無引數

actionprintexplicit = (string s) => console.writeline(s);      //顯式型別的字串引數

funccompare = (int x, int y) =>

內容部分摘自《linq in action》一書。

匿名方法與Lambda表示式

匿名方法的概念 這個方法沒有具體的名稱,而只有委託關鍵字 方法引數 方法體,所以稱為匿名方法,匿名方法允許將 塊通過委託變數作為引數傳遞,以代替單獨定義的方法。首先宣告乙個委託 public delegate int calculatordelegate int a,int b 然後使用匿名方法 c...

匿名方法與lambda表示式

匿名方法,從字面上理解即是沒有名字的的方法。用delegate關鍵字進行宣告且只能賦值給乙個委託 for example1 static void main string args ps 經常用作 從c 3.0後又開始使用lambda表示式來代替匿名函式,只要在有委託引數型別的地方就可以使用lamb...

匿名方法和Lambda表示式

出於mvvm學習的需要,複習下匿名方法和lambda表示式,因為之前用的也比較少,所以用的也不是很熟練,baidu下相關的知識,寫了這個demo,目標是用簡單的方法展示這個怎麼用。這裡偏重的和linq中的lambda表示式 var fileslookup files.tolookup f f.sub...