是否可以在 lambda 表达式中使用 switch?如果不是,为什么? Resharper 将其显示为错误。
最佳答案
您可以在语句 block 中使用 lambda:
Action<int> action = x =>
{
switch(x)
{
case 0: Console.WriteLine("0"); break;
default: Console.WriteLine("Not 0"); break;
}
};
但是你不能在“单一表达式 lambda”中这样做,所以这是无效的:
// This won't work
Expression<Func<int, int>> action = x =>
switch(x)
{
case 0: return 0;
default: return x + 1;
};
这意味着您不能在表达式树中使用 switch(至少由 C# 编译器生成;我相信 .NET 4.0 至少在库中支持它)。
关于C# 在 lambda 表达式中切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1432941/