【发布时间】:2014-11-08 20:42:24
【问题描述】:
我正在为以下课程寻找GetHashCode() 方法的简单实现。
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)
{
...
}
}
当然,简单的实现类似于return Math.Sign(obj)。不过,我正在寻找更实用的东西。你有什么想法吗?
【问题讨论】:
-
这可能并不容易。
GetHashCode()应该与Equals()保持一致。如果您的Equals()与 epsilon 进行比较,那么与 epsilon 比较相等的两个双精度必须具有相同的哈希码。