Looking for c# Keywords? Try Ask4Keywords

C# Language Lambda expresions


пример

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 на консоль.

Первое лямбда-выражение квадратизирует числа в списке. Поскольку существует только одна скобка параметра, ее можно опустить. Вы можете включить скобки, если хотите:

.Select( (number) => number * number);

или явно введите параметр, но затем требуются скобки:

.Select( (int number) => number * number);

Тело лямбда является выражением и имеет неявное возвращение. Вы можете использовать тело оператора, если хотите. Это полезно для более сложных лямбдов.

.Select( number => { return number * number; } );

Метод select возвращает новый IEnumerable с вычисленными значениями.

Второе лямбда-выражение суммирует числа в списке, возвращаемом методом select. Скобки необходимы, поскольку существует несколько параметров. Типы параметров явно напечатаны, но это необязательно. Следующий метод эквивалентен.

.Aggregate( (first, second) => { return first + second; } );

Как и этот:

.Aggregate( (int first, int second) => first + second );