ReSharper 2025.2 Help

代码检查:重写的 GetHashCode 调用了基类 'Object.GetHashCode()'

在 .NET 中, GetHashCode() 被用于内置类中,以高效地在集合中查找对象。 当您重写 GetHashCode() 时,目标通常是提供一个更适合您的特定对象的哈希函数,尤其是在其等同性与基类 Object 的等同性不同时。

虽然您可以在重写中调用 base.GetHashCode() ,但这样做 通常没有用 ,因为基类的实现不了解派生类的特定状态和成员变量。 因此,它可能无法为您的自定义对象提供有意义且分布良好的哈希代码。

如果您已经重写了 GetHashCode() ,这表明您正在更改对象的等同性语义,因此不应再委托回基类的 GetHashCode()。 您应该根据对象的内部状态计算哈希代码。

此外,在 .NET 中有一条非常重要的规则:如果您重写了 GetHashCode() ,您还需要重写 Equals() ,并且它们必须保持一致。 如果 Equals() 表示两个对象相同,那么 GetHashCode() 必须为它们返回相同的哈希代码。

最后修改日期: 2025年 9月 27日