J'ai un objet de type Foo
.
Foo a un Id
(int)
a) Le code ci-dessous est-il "bon"?
b) Que devrais-je renvoyer si les deux sont nuls?
// surcharge de l'opérateur==
public static bool operator ==(Foo x, Foo y)
{
if (ReferenceEquals(x, y))
{
return true;
}
if (x == null && y == null)
{
return // ???
}
if (x == null || y == null)
{
return false;
}
return x.Id == y.Id; // Les Id sont les mêmes
}
public static bool Equals(Foo x, Foo y)
{
return x == y;
}
MODIFICATION:
c) Est-ce que la méthode Equals doit appeler l'opérateur \==, ou vice-versa?
Dernière question
d) Est-il possible que ReferenceEquals(x, y) == true
ET x.Id != y.Id
?