citar Guidelines and rules for GetHashCode por Eric Lippert:¿Cómo creo un HashCode en .net (C#) para una cadena que es segura de almacenar en una base de datos?
Regla: Los consumidores de GetHashCode no pueden confiar en que sea estable a lo largo del tiempo o entre dominios de aplicación
Suponga que tiene un objeto Cliente que tiene un montón de campos como Nombre, Dirección, etc. Si crea dos objetos con exactamente los mismos datos en dos procesos diferentes, no tienen que devolver el mismo código hash . Si hace ese objeto en martes en un proceso, apáguelo, y ejecute el programa nuevamente en Miércoles, los códigos hash pueden ser diferentes.
Esto ha mordido a personas en el pasado. La documentación para System.String.GetHashCode señala específicamente que dos cadenas idénticas pueden tener diferentes códigos hash en diferentes versiones del CLR, y de hecho lo hacen. No almacene valores hash de cadena en bases de datos y espere que sean los mismos para siempre, porque no lo serán.
Entonces, ¿cuál es la forma correcta de crear un HashCode de una cadena que puedo almacenar en una base de datos?
(Por favor, dime que no soy la primera persona que ha dejado este error en el software que he escrito!)
Bueno, nunca confío en GetHashCode, porque sé lo descuidado que implemento este método. Creo que otros no lo están haciendo mejor ... ;-) –
No eres la primera persona que ha dejado este error en el software que has escrito. – Bobby
Los motores Dbase ya son muy buenos en las cadenas hash. Solo crea un índice para la columna. –