=> 讀作「匯出」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...