2009-05-08 22 views
11

Por lo que yo sé, no hay un equivalente directo en C#. Mi idea actual es usar un diccionario con un IEqualityComparer personalizado, que compruebe la igualdad de referencia.C# Equivalente a Java IdentityHashMap

Sin embargo, esto parece perder la ventaja obtenida por hash. ¿Hay alguna manera de obtener un código hash individual de cada objeto diferente? ¿O es esto imposible y debería usar algún otro enfoque?

Respuesta

18

Puede utilizar RuntimeHelpers.GetHashCode(object) que exige object.GetHashCode() prácticamente no - esto es el equivalente a System.identityHashcode en Java. Creo que eso es lo que buscas. Entonces su IEqualityComparer solo usaría eso para hash y object.ReferenceEquals para igualdad.

+0

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