gpt4 book ai didi

c# - 什么是 IEqualityComparer 的实现 GetHashCode()

转载 作者:太空狗 更新时间:2023-10-30 00:07:24 29 4
gpt4 key购买 nike

我正在寻找以下类的 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)。不过,我正在寻找更实用的东西。你有什么想法吗?

最佳答案

这违反了 IEqualityComparer<> 的规范甚至在您不必担心 GetHashCode 之前.

要进行相等性检查,您需要 x == y && y == z暗示x == z但这对你的 Equals 不是真的执行。例如,epsilon 为 1 , 你有 1 == 1.91.9 == 2.8但不是 1 == 2.8 .

(您还需要 x == xx == y 来暗示 y == x ,但您的相等性检查对这些没问题。)

关于c# - 什么是 IEqualityComparer<double> 的实现 GetHashCode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25846066/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com