C#lambdaexpression式可以有多个语句吗?
一个C#lambdaexpression式可以包含多个语句吗?
(编辑:如下面几个答案中所引用的,这个问题最初是关于“行”而不是“语句”的问题。)
当然:
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; } );
你可以在lambdaexpression式中放置尽可能多的换行符; C#忽略换行符。
你可能打算询问多个陈述 。
多个语句可以用大括号包装。
请参阅文档 。
(我假设你真的在说多条语句,而不是多行。)
您可以在使用大括号的lambdaexpression式中使用多个语句,但是只有不使用大括号的语法才能转换为expression式树:
// 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; }
从Lambdaexpression式(C#编程指南) :
lambdaexpression式的主体可以包含任意数量的语句; 但实际上通常不超过两三个。