Lambda表達式與匿名方法的區別
那麼,為什麼Lambda表達式比匿名方法寫起來要短呢?這種像變戲法一樣的手法真的能用嗎?有沒有重要信息遺漏掉呢?為了回答這些問題,就讓我們把匿名方法和Lambda表達式比較一下,看看Lambda表達式究竟怎麼寫。
1using System;
2
3delegate int SampleDelegate(int x, int y);
4
5class Program
6{
7 private static void Calculate(int x, int y, SampleDelegate calculator)
8 {
9 Console.WriteLine(calculator(x, y));
10 }
11
12 static void Main(string[] args)
13 {
14 // 匿名方法
15 Calculate(1, 2,
16 delegate(int x, int y) { return x + y; }); // 輸出:3
17
18 // Lambda表達式
19 Calculate(1, 2, (x, y) => x + y); // 輸出:3
20 }
21}
22
List9 匿名方法與Lambda表達式的比較
這段代碼中,下述部分分別是匿名方法和Lambda表達式的寫法:
匿名方法
delegate(int x, int y) { return x + y; }
Lambda表達式
(x, y) => x + y
字面上比較一下就能發現以下不同:
* delegate關鍵字沒有了
* return關鍵字沒有了
* 指定參數的類型的int沒有了
* 中括號“{ }”沒有了
* 行尾的分號“;”沒有了
* 新出現了“=>”這兩個字符
下面,對這些區別,一個一個來解釋。