C# 8.0 switch expression单个分支能否执行多个操作?
C# switch 表达式多操作分支问题解答
结论1:你示例的写法不可行
C# 8.0 引入的 switch 表达式每个匹配分支的=>后仅允许跟单个表达式,不支持直接用逗号分隔多个方法调用或执行语句。
结论2:可以通过语句Lambda包装实现类似效果,非必要不推荐
如果一定要用 switch 表达式实现单分支多操作,可以将多个执行逻辑封装到语句Lambda中,配合委托调用实现,示例代码如下:
// switch 表达式本身必须返回值,无业务需要时可用弃元 _ 接收 _ = example switch { 1 => new Action(() => { doThing1(); doThing2(); })(), 2 => doThing3(), _ => throw new Exception() };
最佳实践建议
如果你的逻辑是无返回值的纯操作,不需要使用switch结构的返回结果,优先使用传统switch语句,可读性更高,无需为了使用新语法强行套写增加理解成本。
内容的提问来源于stack exchange,提问作者tholomew
相关产品推荐
相关产品推荐

