如何在Visual Studio中检测IF条件内误用赋值运算符替代相等运算符的问题
Visual Studio 检测条件判断内赋值误用的配置方法
你遇到的=误用为==的场景,C#编译器本身有对应警告规则,只需调整VS编译配置即可触发提示:
- 调整警告等级
默认VS的C#项目警告等级为3,专门检测「条件表达式中赋值」的规则CS0665属于等级4的警告,只需将警告等级升级到4即可默认触发提示:- 右键项目 → 选择「属性」→ 切换到「生成」页签
- 找到「警告等级」选项,将值修改为4
- 升级为错误(可选)
如果需要直接阻止此类代码编译通过,可以将该警告设置为错误:- 同上述生成页签,找到「将警告视为错误」的输入框,填入
0665 - 也可以直接修改项目的
.csproj文件,添加如下配置:
- 同上述生成页签,找到「将警告视为错误」的输入框,填入
<PropertyGroup> <!-- 全局警告等级设为4 --> <WarningLevel>4</WarningLevel> <!-- 指定CS0665警告视为错误 --> <WarningsAsErrors>$(WarningsAsErrors);0665</WarningsAsErrors> </PropertyGroup>
额外规避技巧
如果不想依赖编译器配置,也可以养成常量左置的编码习惯:将判断中的常量写在运算符左侧,例如把isFoo == false写为false == isFoo,此时如果误写为=,编译器会直接抛出「无法为常量赋值」的错误,无需额外配置就能提前发现问题。
内容的提问来源于stack exchange,提问作者Muflix
相关产品推荐
相关产品推荐

