You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 7.0类型模式:如何反转布尔对象的判断表达式?

用C# 7.0类型模式反转判断逻辑的方案

当然可以实现!咱们先拆解一下原代码的逻辑:你原来的代码是当对象是bool类型且值为true时跳过操作,否则执行DoSomething()。现在要反转这个if表达式,直接判断“对象不是bool类型,或是bool类型但值为false”的情况,不用再依赖else分支。

不过得注意,C# 7.0还没引入not和or这类更简洁的模式匹配关键字,所以咱们得用它支持的语法来组合条件:

if ((obj is bool falseBoolean && !falseBoolean) || !(obj is bool))
{
    DoSomething();
}

这个表达式和你原来的else分支逻辑完全等价:

  • 第一部分obj is bool falseBoolean && !falseBoolean:匹配“是bool类型但值为false”的情况
  • 第二部分!(obj is bool):匹配“不是bool类型”的情况
  • 用||连接两个条件,就覆盖了你需要的所有场景

如果是用C# 9.0及以上的版本,写法会更优雅:

// C# 9.0+ 支持的简洁写法
if (obj is not bool or false)
{
    DoSomething();
}

但既然你限定了C# 7.0,前面的写法就是最贴合要求的实现啦。

内容的提问来源于stack exchange,提问作者Ivan García Topete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:21:03