sto ottenendo questo avvertimento, ma non riesco a capire il problema ...CodeContracts: la condizione booleana viene valutata a un valore costante, perché?
CodeContracts: Attenzione: La condizione booleana d1.Count = d2.Count restituisce sempre un valore costante. Se esso (o la sua negazione) appaiono nel codice sorgente, si può avere qualche codice morto o ridondante controllo
Il codice è il seguente:
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;
}
La parte // Equality check goes here
può essere così com'è , o sostituito da a proper implementation e ho ancora lo stesso avviso.
Sembra che '(d1 == d2)' dovrebbe essere cambiato in 'Object.ReferenceEquals (d1, d2)' –
@DmitryBychenko Che fa la stessa cosa. Non esiste un operatore sovraccarico per 'IDictionary'. –
hvd
@hvd Non è possibile fornire il sovraccarico dell'operatore per le interfacce –