如何从重新实现GetHashCode的类中获取原始哈希码
本文关键字:GetHashCode 获取 哈希码 原始 实现 新实现 | 更新日期: 2023-09-27 18:08:37
短问题:如何获得重新实现GetHashCode()
的对象的object.GetHashCode()
值?
长故事:因此,我有大约十万个对象,每个对象共享许多(非编译时)公共字符串。通用的,如如果值相等,则为同一实例。
知道了这一点,我想我宁愿使用标准的对象比较(ReferenceEquals
)而不是完整的字符串比较-特别是因为这些都是在相当定期的基础上在字典中查找的。
所以我声明一个class ReferenceEqualityComparer : IEqualityComparer
与Dictionary<string, TValue>
一起使用,认为它无论如何都是有用的,并开始尝试实现这两个方法。
Equals很简单,使用object.ReferenceEquals
。
但是我如何为GetHashCode
方法获得object.GetHashCode()
的等价物?
我知道还有其他的方法我可以去做这件事-创建一个InternedString
类持有string
的引用,但不实现Equals
或GetHashCode
,或存储索引而不是字符串与每个对象,但我现在很好奇-实际上有一种方法来实现一个通用的ReferenceEqualityComparer
?
看看RuntimeHelpers.GetHashCode(object)