C # equivalente de Java IdentityHashMap
-
22-07-2019 - |
Pergunta
Tanto quanto eu sei, não há nenhum equivalente direto em C #. Minha idéia atual é usar um dicionário com um IEqualityComparer costume, que verifica a existência de igualdade de referência.
No entanto, isso parece perder a vantagem obtida por hashing. Existe uma maneira de obter um código hash individuais de cada objeto diferente? Ou isso é impossível e que eu deveria usar alguma outra abordagem?
Solução
Você pode usar RuntimeHelpers.GetHashCode(object)
que chamadas object.GetHashCode()
não virtualmente - este é o equivalente a System.identityHashcode
em Java. Eu acho que é isso que você está depois. Portanto, o seu IEqualityComparer
só iria usar isso para hash e object.ReferenceEquals
pela igualdade.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow