【问题标题】:Prevent assignment in conditional expression in visual studio 2010在 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。

标签: c# visual-studio-2010 fxcop stylecop


【解决方案1】:

ReSharper 会为此显示警告,说:

Expression is always true

我建议使用“配置检查严重性”并将其升级到 Error

【讨论】:

  • @DieterDHoker 你使用 ReSharper 吗?
猜你喜欢
  • 2020-03-20
  • 1970-01-01
  • 2019-12-12
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 2011-10-12
相关资源
最近更新 更多