简短的问题:我如何获得object.GetHashCode()
重新实现的对象的值GetHashCode()
?
很长的故事:所以我有大约十万个对象,每个对象共享许多(非编译时)公共字符串。常见的是如果值相等,则它是同一个实例。
知道了这一点,我想我宁愿使用标准对象比较(ReferenceEquals
)而不是完整的字符串比较 - 特别是因为这些是相当定期地在字典中查找的。
所以我声明一个class ReferenceEqualityComparer : IEqualityComparer
与使用Dictionary<string, TValue>
,认为无论如何都有用,并开始尝试实现这两种方法。
等于很容易,使用object.ReferenceEquals
.
但我怎样才能得到相当于object.GetHashCode()
为了GetHashCode
method?
即如何获得对象实例的某种表示?
我知道还有其他方法可以做到这一点 - 创建一个InternedString
包含对的引用的类string
,但没有实现Equals
or GetHashCode
,或者存储索引而不是每个对象的字符串,但我现在很好奇 - 实际上是否有一种方法可以实现通用ReferenceEqualityComparer
?
看一下RuntimeHelpers.GetHashCode(object) http://msdn.microsoft.com/en-us/library/11tbk3h9.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)