C# 相当于 Java IdentityHashMap

2022-09-04 20:03:40

据我所知,C#中没有直接的等价物。我目前的想法是使用带有自定义IEqualityComparer的字典,该字典检查引用相等性。

但是,这似乎失去了通过散列获得的优势。有没有办法从每个不同的对象中获取单个哈希码?或者这是不可能的,我应该使用其他方法?


答案 1

您可以使用 RuntimeHelpers.GetHashCode(object) 它以非虚拟方式调用 - 这相当于 Java 中的版本。我想这就是你所追求的。所以你只会用它来做哈希和平等。object.GetHashCode()System.identityHashcodeIEqualityComparerobject.ReferenceEquals


答案 2