ant*_*tak 11 c# code-contracts
我收到了这个警告,但无法弄清楚问题......
CodeContracts:警告:布尔条件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;
}
Run Code Online (Sandbox Code Playgroud)
该// Equality check goes here
部分可以按原样,或由适当的实现替换,我仍然得到相同的警告.
这只是代码合同中的一个错误.很容易编造使这种情况成为真或假的输入.警告是假的.
根据个人经验,我知道CC中的错误并不罕见.
怎么修?由于这是一个错误,因此没有官方/预期的行动方案.报告错误.微笑代码直到警告消失(例如,尝试ReferenceEquals
哪种风格更好).取消警告.像这样的东西.