在 Visual Studio 2010 中防止条件表达式中的赋值
Posted
技术标签:
【中文标题】在 Visual Studio 2010 中防止条件表达式中的赋值【英文标题】:Prevent assignment in conditional expression in visual studio 2010 【发布时间】:2014-05-08 16:32:25 【问题描述】:给定以下代码:
bool test = false;
bool test2 = true;
if (test = test2)
我想在编译这段代码时得到一个警告,因为我可能想要 == 代替。 我没有收到编译器的警告,也找不到任何地方的代码分析规则(fxcop 或 stylecop)。
我发现的最接近的编译器警告是 CS0665: http://msdn.microsoft.com/en-us/library/c1sde1ax%28v=vs.90%29.aspx 但这只有在我这样做时才会触发:
if (test = true)
谁能给我指出一个现有的规则或工具,我可以集成到我的构建过程中来触发它?
我们是否有充分的理由要允许第一个构造?
【问题讨论】:
FWIW,它并不是真正的 VS 允许将其作为分配,而是 .NET。此外,ReSharper 会捕捉到这一点,但默认情况下不会发出警告。但是,它可以配置为这样做。 如果你经常遇到这个问题,那么你也会遇到更大的问题。您最好解决所有类似的问题(开发人员经验不足、代码审查不足和 QA 不足)。 您可以使用这种结构的原因类似于string bar; if (foo == null || (bar = GetABar()) == null) return;
。这可以防止您急切地评估 GetABar() 或添加赋值行和另一个 if。
【参考方案1】:
ReSharper 会为此显示警告,说:
Expression is always true
我建议使用“配置检查严重性”并将其升级到 Error
【讨论】:
@DieterDHoker 你使用 ReSharper 吗?以上是关于在 Visual Studio 2010 中防止条件表达式中的赋值的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 2010 中锁定 texbox 滚动条
如何在 Visual Studio Code 中临时禁用“防止脏写”功能
如何防止 Visual Studio 在调试时启动 WcfSvcHost.exe?