Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Equivalent of Java IdentityHashMap

As far as i know, there is no direct equivalent in C#. My current idea is to use a Dictionary with a custom IEqualityComparer, that checks for reference equality.

However, this seems to lose the advantage gained by hashing. Is there a way to get an individual hashcode out of every different object? Or is this impossible and I should use some other approach?

like image 245
mafu Avatar asked May 08 '09 09:05

mafu


1 Answers

You can use RuntimeHelpers.GetHashCode(object) which calls object.GetHashCode() non-virtually - this is the equivalent of System.identityHashcode in Java. I think that's what you're after. So your IEqualityComparer would just use that for hashing and object.ReferenceEquals for equality.

like image 143
Jon Skeet Avatar answered Sep 20 '22 13:09

Jon Skeet