Dostaję to ostrzeżenie, ale nie można dowiedzieć się problem ...CodeContracts: Warunek logiczny jest wartością stałą, dlaczego?
CodeContracts: ostrzeżenie: Boolean stan d1.Count = d2.Count zawsze ma wartość stałą wartość. Jeśli to (lub jego negacja) pojawiają się w kodzie źródłowym, można mieć pewne martwego kodu lub redundantny czek
Kod jest w następujący sposób:
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
część może być tak jest lub zastąpione przez a proper implementation i wciąż otrzymuję to samo ostrzeżenie.
Wydaje się, że "(d1 == d2)" należy zmienić na "Object.ReferenceEquals (d1, d2)" –
@DmitryBychenko To robi to samo. Nie ma przeciążonego operatora dla 'IDictionary'. –
hvd
@hvd Nie można zapewnić przeciążenia operatora dla interfejsów –