Лямбда выражения, это более лучшая замена анонимным методам, которая основываются на новом синтаксисе. Во всех лямбда выражениях должен быть лямбда оператор “=>”. Этот оператор разделяет выражение на две части.
В левой части – параметры (может быть несколько).В правой части – тело метода;
Есть еще такие понятия, как одиночные и блочные лямбда выражения. Все просто, если у нас после цикла for или оператора if включается одна строчка кода, то незачем включать эту строку в фигурные скобки. Это относится к одиночным лямбда выражениям, но если в выражение несколько строчек, нужно захватить этот блок в фигурные скобки.
Необходимо определить делегат, совместимого с лямбда-выражением, затем создать экземпляр делегата, которому присваивается лямбда-выражение.
delegate int Pow(int change);Pow pow = change => change * change; Console.WriteLine(pow(10)); // ризультат будет 100
Теперь перепишем пример про велосипедиста с использованием лямбда-выражения.
Результат будет тот же, что при использование анонимных методов. Типы параметров не указываются. Компилятор сам определяет, какие типы имеют параметры, исходя из делегата и его типа, который возвращается. Хотя, можно и явно указать тип, к примеру так:
LambdaDelegate lambdaDel = (int a) => ++a;Обратите внимание на выражение “++a”.Если переписать, например, вот так: “a++” – будет бесконечный цикл!
Чтоб создать блочное лямбда-выражение, нужно просто его взять в фигурные скобки. Преимущества в использование блочных выражений проявляется в том, что есть возможность управлять такими операторами как if, for и т.д. Все также как при написание простых методов.