如何从重新实现GetHashCode的类中获取原始哈希码

本文关键字:GetHashCode 获取 哈希码 原始 实现 新实现 | 更新日期: 2023-09-27 18:08:37

短问题:如何获得重新实现GetHashCode()的对象的object.GetHashCode()值?

长故事:因此,我有大约十万个对象,每个对象共享许多(非编译时)公共字符串。通用的,如如果值相等,则为同一实例。

知道了这一点,我想我宁愿使用标准的对象比较(ReferenceEquals)而不是完整的字符串比较-特别是因为这些都是在相当定期的基础上在字典中查找的。

所以我声明一个class ReferenceEqualityComparer : IEqualityComparerDictionary<string, TValue>一起使用,认为它无论如何都是有用的,并开始尝试实现这两个方法。

Equals很简单,使用object.ReferenceEquals

但是我如何为GetHashCode方法获得object.GetHashCode()的等价物?

我如何得到一个对象的实例的一些表示?

我知道还有其他的方法我可以去做这件事-创建一个InternedString类持有string的引用,但不实现EqualsGetHashCode,或存储索引而不是字符串与每个对象,但我现在很好奇-实际上有一种方法来实现一个通用的ReferenceEqualityComparer ?

如何从重新实现GetHashCode的类中获取原始哈希码

看看RuntimeHelpers.GetHashCode(object)