2010-06-18 3 views

ответ

16

Он упоминается как lambda operator in the MSDN docs.

Все выражения лямбда использовать оператор лямбда =>, который читается как «идет к». В левой части оператора лямбда указаны параметры ввода (если есть), а правая сторона имеет выражение или оператор блок. Выражение лямбда x => x * x читается «x переходит в x раз x». Это выражение может быть отнесен к типу делегата следующим образом:

2

Если говорить в контексте LINQ, который является lamdba operator.

Такие, как ...

var selectedValues = myList.Where(v=>v.Name="Matt"); 

Вы можете использовать их в своих собственных методов вместо delgates. Возможное использование будет включать в себя что-то вроде этого ...

void DoWork<T>(T input, Func<T, bool> doAction, Action<T> action) 
{ 
    if (doAction(input)) 
     action(input); 
} 

... использование описанного выше метода будет выглядеть ...

DoWork(5, i=>i>1, v=>Console.WriteLine(v)); 

... потому что 5 больше 1 это будет отображаться 5 на консоли.

+0

Лямбда-операторы используются не только с LINQ. – Femaref

+0

Я действительно верю, что мой пример показывает, что ... Я сказал в контексте, потому что он мог бы увидеть что-то орехи в примере, например 'for (; i => 1;)', и может не понимать, что это нормальное выражение. Еще более забавно, что в LINQ вы также можете сделать '.Select (i =>« Новое значение »)', чтобы создать перечислимый набор «New Value» длины набора входных данных. –

+1

Просто, чтобы быть ясным, '=>' не является "выражением лямбда" - это * его часть *. –