代码优化:如何将多条件OR(||)语句简化为易读单行代码?
简化多行OR条件语句的可行方案
针对你给出的重复判断多个值的OR条件,有几种简洁且可读性强的优化方式:
1. 提取重复转换+集合包含判断
先把重复的Convert.ToByte(hfStatus.Value)操作提取为变量,避免重复计算,再用集合的Contains方法判断是否在目标值列表中:
byte status = Convert.ToByte(hfStatus.Value); if (new HashSet<byte> { 3, 4, 5, 8, 9, 10, 11, 12 }.Contains(status)) { // 业务逻辑代码 }
这种方式适合目标值零散无规律的场景,后续维护时只需修改集合内的元素即可,可读性和扩展性都不错。如果是频繁判断的场景,建议把集合定义为静态常量,避免重复创建对象。
2. 使用C# 9+的模式匹配语法
C# 9及以上版本支持or模式匹配,直接在条件中写出所有目标值,语法简洁直观:
if (Convert.ToByte(hfStatus.Value) is 3 or 4 or 5 or 8 or 9 or 10 or 11 or 12) { // 业务逻辑代码 }
这种写法最接近原逻辑的直观表达,不需要额外变量或集合,代码行数最少,可读性拉满。
3. 利用连续范围合并判断
观察目标值可以发现,它们刚好分成两个连续区间:3-5和8-12,可以直接用范围判断合并条件:
byte status = Convert.ToByte(hfStatus.Value); if ((status >= 3 && status <= 5) || (status >= 8 && status <= 12)) { // 业务逻辑代码 }
这种方式代码最紧凑,执行效率也最高,适合目标值存在连续区间的场景。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

