我收到此警告但无法解决问题...
CodeContracts:warning:布尔条件d1.Count!= d2.Count始终计算为常量值。如果它(或否定) 出现在源代码中,您可能有一些死代码或冗余代码 检查
代码如下:
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替换,我仍会收到相同的警告。
答案 0 :(得分:5)
这只是代码合同中的一个错误。很容易编造使这种情况成为真或假的输入。警告是假的。
根据个人经验,我知道CC中的错误并不罕见。
如何解决?由于这是一个错误,因此没有官方/预期的行动方案。报告错误。微笑代码直到警告消失(例如,尝试ReferenceEquals
,这是更好的风格)。取消警告。这样的事情。