¿Cómo obtener el código hash sin procesar de una clase que vuelva a implementar GethashCode?

StackOverflow https://stackoverflow.com/questions/7414783

Pregunta

Pregunta corta: ¿Cómo consigo el object.GetHashCode() valor para un objeto que ha vuelto a implementar GetHashCode()?

Larga historia:Así que tengo alrededor de cien mil objetos, cada uno compartiendo muchas cuerdas comunes (tiempo no compile). Común como si el valor es igual, es la misma instancia.

Sabiendo eso, creo que prefiero usar una comparación de objetos estándar (ReferenceEquals) en lugar de una cadena completa en comparación, particularmente porque estos se buscan en los diccionarios de manera bastante regular.

Entonces declaro un class ReferenceEqualityComparer : IEqualityComparer para usar con un Dictionary<string, TValue>, pensando que sería útil tener de todos modos e intentar implementar los dos métodos.

Igual es bastante fácil, usa object.ReferenceEquals.

Pero, ¿cómo obtengo el equivalente de object.GetHashCode() Para el GetHashCode ¿método?

es decir, ¿cómo obtengo alguna representación de la instancia de un objeto?

Sé que hay otras formas en que puedo hacer esto: crear un InternedString clase que tiene una referencia al string, pero no implementa Equals o GetHashCode, o almacenar índices en lugar de cadenas con cada objeto, pero ahora tengo curiosidad, ¿hay realmente una forma de implementar un genérico? ReferenceEqualityComparer?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top