在 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 2010 无法删除数据连接

如何防止 Visual Studio 在调试时启动 WcfSvcHost.exe?

如何在 Visual Studio 2010 中禁用 Ctrl+滚动缩放?

如何在Visual Studio 2010中禁用Ctrl +滚动?