C # equivalente de Java IdentityHashMap

votos
11

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 igualdade de referência.

No entanto, isso parece perder a vantagem obtida por hash. 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?

Publicado 08/05/2009 em 10:17
fonte usuário
Em outras línguas...                            


1 respostas

votos
18

Você pode usar RuntimeHelpers.GetHashCode(object)o que exige object.GetHashCode()não virtualmente - este é o equivalente a System.identityHashcodeem Java. Eu acho que é isso que você está depois. Portanto, o seu IEqualityCompareriria usar apenas que para hash eobject.ReferenceEquals de igualdade.

Respondeu 08/05/2009 em 10:24
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more