CodeContracts:布尔条件的计算结果为常数值,为什么?
CodeContracts: Boolean condition evaluates to a constant value, why?
我收到此警告但无法找出问题...
CodeContracts: warning: The Boolean condition d1.Count !=
d2.Count always evaluates to a constant value. If it (or its negation)
appear in the source code, you may have some dead code or redundant
check
代码如下:
public static bool DictionaryEquals<TKey, TValue>(IDictionary<TKey, TValue> d1, IDictionary<TKey, TValue> d2)
{
if (d1 == d2) return true;
if (d1 == null || d2 == null) return false;
if (d1.Count != d2.Count) return false; // <-- warning here
// Equality check goes here
return true;
}
// Equality check goes here
部分可以保持原样,也可以替换为 a proper implementation,但我仍然收到相同的警告。
这只是代码合同中的一个错误。很容易编造使该条件为真或假的输入。警告是假的。
根据个人经验,我知道 CC 中的错误并不少见。
如何解决?由于这是一个错误,因此没有 official/intended 行动方案。报告错误。调整代码直到警告消失(例如,尝试 ReferenceEquals
无论如何这是更好的风格)。抑制警告。诸如此类。
我收到此警告但无法找出问题...
CodeContracts: warning: The Boolean condition d1.Count != d2.Count always evaluates to a constant value. If it (or its negation) appear in the source code, you may have some dead code or redundant check
代码如下:
public static bool DictionaryEquals<TKey, TValue>(IDictionary<TKey, TValue> d1, IDictionary<TKey, TValue> d2)
{
if (d1 == d2) return true;
if (d1 == null || d2 == null) return false;
if (d1.Count != d2.Count) return false; // <-- warning here
// Equality check goes here
return true;
}
// Equality check goes here
部分可以保持原样,也可以替换为 a proper implementation,但我仍然收到相同的警告。
这只是代码合同中的一个错误。很容易编造使该条件为真或假的输入。警告是假的。
根据个人经验,我知道 CC 中的错误并不少见。
如何解决?由于这是一个错误,因此没有 official/intended 行动方案。报告错误。调整代码直到警告消失(例如,尝试 ReferenceEquals
无论如何这是更好的风格)。抑制警告。诸如此类。