C # equivalente di Java IdentityHashMap
-
22-07-2019 - |
Domanda
Per quanto ne so, non esiste un equivalente diretto in C #. La mia idea attuale è quella di utilizzare un dizionario con un IEqualityComparer personalizzato, che controlla l'uguaglianza di riferimento.
Tuttavia, questo sembra perdere il vantaggio ottenuto dall'hashing. C'è un modo per ottenere un hashcode individuale da ogni oggetto diverso? O è impossibile e dovrei usare un altro approccio?
Soluzione
Puoi utilizzare RuntimeHelpers.GetHashCode (object)
che chiama object.GetHashCode ()
non virtualmente - questo è l'equivalente di System.identityHashcode
in Java. Penso che sia quello che stai cercando. Quindi il tuo IEqualityComparer
lo userebbe solo per hashing e object.ReferenceEquals
per uguaglianza.