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

为什么C#的is运算符比较布尔值结果正确?是否推荐使用?

关于C#中用is运算符判断布尔值的用法说明

结论

is运算符判断布尔值属于完全合规的正确用法,完全符合C#语言规范,不存在使用错误的问题。

原理说明

C# 7.0版本引入模式匹配特性后,is运算符的能力就不再局限于早期的运行时类型检测,而是支持多种模式匹配场景,你用到的test is false就属于常量模式的用法:当is右侧是字面量常量时,会直接比较左侧表达式和常量的值是否相等,对于布尔类型来说,匹配逻辑和==运算符、逻辑非!完全一致,编译生成的底层代码也没有区别,不存在性能损耗。

你提供的两种写法都是完全正确的:

bool test = false;

// 写法1:传统逻辑非写法
if(!test)
{
// some code
}

// 写法2:is常量模式写法
if(test is false)
{
// some code
}

写法选择建议

  • 两种写法没有功能和性能上的差异,具体选择可以遵循团队统一的代码规范即可
  • 对于复杂逻辑嵌套的场景,test is false的可读性优于!test,可以避免把逻辑非符号看漏的问题,同时也能规避误把==写成=的低级语法错误
  • 部分开发者也会在可空布尔值(bool?)场景下优先用is运算符,比如nullableBool is true,写法比nullableBool == true更简洁直观

内容的提问来源于stack exchange,提问作者PontiusTheBarbarian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:42:02