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

时间:2011-09-14 10:27:53

标签: c# hash dictionary iequalitycomparer

简短问题:如何获取已重新实施object.GetHashCode()的对象的GetHashCode()值?

长篇故事: 所以我有大约十万个对象,每个对象共享许多(非编译时)常见字符串。常见,如果值相等,则它是相同的实例。

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

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

等于很容易,请使用object.ReferenceEquals

但是如何为object.GetHashCode()方法获得等效的GetHashCode

即如何获得对象实例的某种表示?

我知道还有其他方法可以执行此操作 - 创建一个InternedString类,其中包含对string的引用,但不实现Equals或{{1}或者存储索引而不是每个对象的字符串,但我现在很好奇 - 实际上有一种实现泛型GetHashCode的方法吗?

1 个答案:

答案 0 :(得分:3)