Lambda 表達
Lambda Expresions 是匿名方法的擴充套件,允許隱式型別化引數和返回值。它們的語法比匿名方法簡潔,並遵循函數語言程式設計風格。
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
var numberList = new List<int> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
var sumOfSquares = numberList.Select( number => number * number )
.Aggregate( (int first, int second) => { return first + second; } );
Console.WriteLine( sumOfSquares );
}
}
上面的程式碼將數字 1 到 10 的平方和輸出到控制檯。
第一個 lambda 表示式將列表中的數字對齊。由於只有 1 個引數,因此可以省略括號。如果你願意,可以包括括號:
.Select( (number) => number * number);
或顯式鍵入引數,但需要括號:
.Select( (int number) => number * number);
lambda 體是一個表示式,具有隱式返回。如果你願意,也可以使用語句體。這對於更復雜的 lambda 非常有用。
.Select( number => { return number * number; } );
select 方法返回帶有計算值的新 IEnumerable。
第二個 lambda 表示式將 select 方法返回的列表中的數字相加。由於有多個引數,因此需要括號。顯式型別的引數型別,但這不是必需的。以下方法是等效的。
.Aggregate( (first, second) => { return first + second; } );
就像這個一樣:
.Aggregate( (int first, int second) => first + second );