Tôi nhận được cảnh báo này nhưng không thể tìm ra vấn đề ...CodeContracts: Điều kiện Boolean đánh giá thành một giá trị không đổi, tại sao?
CodeContracts: cảnh báo: Tình trạng Boolean d1.Count = d2.Count luôn đánh giá một giá trị không đổi. Nếu nó (hoặc phủ định của nó) xuất hiện trong mã nguồn, bạn có thể có một số mã đã chết hoặc thừa séc
Mã này được như sau:
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;
}
Phần // Equality check goes here
có thể như là hoặc thay thế bằng a proper implementation và tôi vẫn nhận được cảnh báo tương tự.
Dường như '(d1 == d2)' nên được thay đổi thành 'Object.ReferenceEquals (d1, d2)' –
@DmitryBychenko Điều tương tự. Không có toán tử quá tải cho 'IDictionary'. –
hvd
@hvd Bạn không thể cung cấp tình trạng quá tải cho các giao diện –