Может ли выражение lambda С# включать более одного оператора?
(Edit: Как упоминалось в нескольких ответах ниже, этот вопрос первоначально задавался о "строках", а не "заявлениях".)
Может ли выражение lambda С# включать более одного оператора?
(Edit: Как упоминалось в нескольких ответах ниже, этот вопрос первоначально задавался о "строках", а не "заявлениях".)
Конечно:
List<String> items = new List<string>();
var results = items.Where(i =>
{
bool result;
if (i == "THIS")
result = true;
else if (i == "THAT")
result = true;
else
result = false;
return result;
}
);
В выражении лямбда вы можете поместить столько строк, сколько хотите; С# игнорирует символы новой строки.
Вероятно, вы хотели спросить о нескольких операторах.
Несколько операторов могут быть завернуты в фигурные скобки.
Смотрите документацию .
(Я предполагаю, что вы действительно говорите о нескольких операторах, а не о нескольких строках.)
Вы можете использовать несколько операторов в выражении лямбда, используя фигурные скобки, но только синтаксис, который не использует фигурные скобки, можно преобразовать в дерево выражений:
// Valid
Func<int, int> a = x => x + 1;
Func<int, int> b = x => { return x + 1; };
Expression<Func<int, int>> c = x => x + 1;
// Invalid
Expression<Func<int, int>> d = x => { return x + 1; };
Func<string, bool> test = (name) =>
{
if (name == "yes") return true;
else return false;
}
От Лямбда-выражения (Руководство по программированию на С#):
Тело оператора лямбда может состоят из любого количества утверждений; однако на практике существует обычно не более двух или трех.