如何在switch模式匹配中使用int值,无需when子句实现范围匹配?
问题解答
你要的这种写法在C#里有两种实现方式,取决于是否需要捕获求和后的变量:
- 不需要捕获变量时,直接用关系模式(C# 9.0及以上支持),不需要
when子句:
var result = (a + b) switch { > 0 => a + b, _ => 0 // 必须包含默认分支,否则编译不通过 };
- 如果一定要捕获求和结果到
sum变量中,那必须搭配when子句,因为var模式本身是匹配所有值的,需要when来过滤条件:
var result = (a + b) switch { var sum when sum > 0 => sum, _ => 0 };
不存在不用when子句就能同时捕获变量并过滤值类型条件的语法,你之前的伪代码逻辑只能通过上述两种方式实现。
内容的提问来源于stack exchange,提问作者KorsaR
相关产品推荐
相关产品推荐

