如何从重新实现GetHashCode的类中获取原始哈希代码?
简短问题:如何获取已重新实现GetHashCode()
的对象的object.GetHashCode()
值?
长话:所以我有大约十万个对象,每个对象共享许多(非编译时)常见字符串。 常见,如果值相等,则它是相同的实例。
知道这一点,我想我宁愿使用标准对象比较( ReferenceEquals
)而不是完整的字符串比较 – 特别是因为这些是在相当规律的基础上在字典中查找的。
所以我声明了一个class ReferenceEqualityComparer : IEqualityComparer
与Dictionary
,认为无论如何都要有用,并且尝试实现这两种方法。
等于很容易,使用object.ReferenceEquals
。
但是如何获得GetHashCode
方法的object.GetHashCode()
等价物呢?
即如何获得对象实例的一些表示?
我知道还有其他方法可以做到这一点 – 创建一个InternedString
类,它保存对string
的引用,但不实现Equals
或GetHashCode
,或者存储索引而不是每个对象的字符串,但我现在很好奇 -实际上有一种实现通用ReferenceEqualityComparer
吗?
看看RuntimeHelpers.GetHashCode(object)
。