2009-05-08 13 views
11

Soweit ich weiß, gibt es in C# keine direkte Entsprechung. Meine aktuelle Idee ist es, ein Dictionary mit einem benutzerdefinierten IEqualityComparer zu verwenden, das nach Referenzgleichheit sucht.C# entspricht Java IdentityHashMap

Dies scheint jedoch den durch das Hashing gewonnenen Vorteil zu verlieren. Gibt es eine Möglichkeit, aus jedem Objekt einen individuellen Hashcode zu erhalten? Oder ist das unmöglich und ich sollte einen anderen Ansatz verwenden?

Antwort

18

Sie können RuntimeHelpers.GetHashCode(object) verwenden, die object.GetHashCode() non-virtuell ruft - das ist das Äquivalent von System.identityHashcode in Java. Ich denke, das ist es, wonach Sie suchen. So würde Ihr IEqualityComparer einfach das für Hashing und object.ReferenceEquals für die Gleichheit verwenden.

+0

http://stackoverflow.com/questions/8946790/how-to-use-an-objects-identity-as-key-for-dictionaryk-v – Yoseph