简短的问题:我如何获得 object.GetHashCode()
已重新实现的对象的值 GetHashCode()
?
长话短说: 所以我有大约十万个对象,每个对象共享许多(非编译时)公共(public)字符串。如果值相等,那么它是相同的实例。
知道这一点,我想我宁愿使用标准对象比较 ( ReferenceEquals
) 而不是完整的字符串比较 - 特别是因为这些比较经常在字典中查找。
所以我声明一个class ReferenceEqualityComparer : IEqualityComparer
与 Dictionary<string, TValue>
一起使用,认为无论如何都有用,并着手尝试实现这两种方法。
等于很简单,使用object.ReferenceEquals
.
但是我怎样才能得到 object.GetHashCode()
的等价物呢?对于 GetHashCode
方法?
即如何获得对象实例的某种表示形式?
我知道还有其他方法可以做到这一点 - 创建一个 InternedString
包含对 string
的引用的类, 但不执行 Equals
或 GetHashCode
,或者为每个对象存储索引而不是字符串,但我现在很好奇 - 实际上有没有办法实现通用的 ReferenceEqualityComparer
?
最佳答案
关于c# - 如何从重新实现 GetHashCode 的类中获取原始哈希码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414783/