Je cherche une implémentation simple de la méthode GetHashCode()
pour la classe suivante.Quelle serait l'implémentation GetHashCode() pour IEqualityComparer <double>
public class EpsilonEqualityComparer : IEqualityComparer<double>
{
private readonly double _epsilon;
public EpsilonEqualityComparer(double epsilon)
{
_epsilon = epsilon;
}
public bool Equals(double x, double y)
{
return Math.Abs(x - y) < _epsilon;
}
public int GetHashCode(double obj)
{
...
}
}
Bien sûr implémentation triviale serait quelque chose comme return Math.Sign(obj)
. Néanmoins, je cherche quelque chose de plus pratique. Avez-vous une idée?
Cela peut ne pas être facile. 'GetHashCode()' est censé agir de manière cohérente avec 'Equals()'. Si votre 'Equals()' se compare à epsilon, alors deux doubles qui comparent égal à epsilon * doivent * avoir le même code de hachage. –