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 );