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