Les documents pour Object.Equals
indiquent que les implémenteurs doivent renvoyer false si le paramètre est une référence NULL.Est-il toujours acceptable de renvoyer True lorsque le paramètre Equals est une référence nulle?
Dans ma classe, je surcharge Equals
pour vérifier l'égalité des valeurs. J'ai une variable membre qui est similaire à la structure Nullable (T)
. Mon inclination initiale est de renvoyer Vrai quand on me donne une référence nulle et que la propriété HasValue
de ma structure est Faux.
Est-il toujours acceptable de renvoyer True lorsque le paramètre Equals est une référence nulle?
EDIT Pour illustration:
class ExampleClass {
SomeValueType? x;
bool Equals(object other) {
if (other == null) return false; // <-- returns a different value than x.Equals
return x.Equals(other);
}
}
Est-ce que null == null? C'est une bonne boîte de vers philosophique. – spender
@spender: 'Object.Equals' ne peut jamais être invoqué quand' this' est 'null', et le littéral dans le code' null == null' est vrai, donc le point est discutable. –
Ah. C'est seulement vrai pour la commodité. Je me bats encore dans ma tête. – spender