一个C#lambda表达式可以有多个语句吗?

C#lambda表达式是否可以包含多个语句?

(编辑:如下面几个答案中所引用的,这个问题最初是关于“行”而不是“语句”问的。)


当然:

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

你可以在lambda表达式中放置尽可能多的换行符; C#忽略换行符。

你可能打算询问多个陈述。

多个语句可以用大括号包装。

请参阅文档。


(我假设你真的在谈论多条语句而不是多条语句。)

您可以在使用大括号的lambda表达式中使用多个语句,但只有不使用大括号的语法才能转换为表达式树:

// 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; };
链接地址: http://www.djcxy.com/p/31595.html

上一篇: Can a C# lambda expression have more than one statement?

下一篇: Func vs. Action vs. Predicate