【发布时间】:2010-10-24 17:58:49
【问题描述】:
据我所知,C# 中没有直接的等价物。我目前的想法是使用带有自定义 IEqualityComparer 的 Dictionary 来检查引用是否相等。
但是,这似乎失去了散列所获得的优势。有没有办法从每个不同的对象中获取单独的哈希码?或者这是不可能的,我应该使用其他方法?
【问题讨论】:
标签: c# java dictionary hashmap
据我所知,C# 中没有直接的等价物。我目前的想法是使用带有自定义 IEqualityComparer 的 Dictionary 来检查引用是否相等。
但是,这似乎失去了散列所获得的优势。有没有办法从每个不同的对象中获取单独的哈希码?或者这是不可能的,我应该使用其他方法?
【问题讨论】:
标签: c# java dictionary hashmap
您可以使用RuntimeHelpers.GetHashCode(object) 以非虚拟方式调用object.GetHashCode() - 这相当于Java 中的System.identityHashcode。我想这就是你所追求的。所以你的IEqualityComparer 只会用它来做散列,object.ReferenceEquals 用来做相等性。