Fijate que el tutorial te dice esto:

"Ya hemos sobrescrito el Equals, ahora debemos hacer lo mismo con
GetHashCode, debido a que 2 objetos iguales deben tener un mismo
número de hash (y 2 objetos distintos pueden o no tener el mismo
número de hash). El número hash no representa un id, no tiene que ser
único.

Una posible implementación podría ser:

          public override int GetHashCode()
                        {
                                return id + 29*factura.GetHashCode();
                        }

Con este método nos aseguramos que 2 líneas factura devuelvan el mismo
número al ser iguales. Al trabajar con números primos obtenemos buenas
funciones hash. Lo importante aquí es hacer bien la función, la
optimización de esta función queda fuera del alcance del tutorial. "

La razon de sobreescribirlo, es que los números de hash que se
devuelven cuando creas 2 objetos Factura (por ejemplo) es muy probable
que sean distintos, de hecho, hacete un programa de consola y probalo
a ver que número te dá. Si nosotros estamos cambiando la funcion que
define cuando 2 objetos son iguales (el Equals), entonces no podemos
tener 2 objetos iguales que devuelvan numeros de hash diferentes.
Debemos ponernos de acuerdo en esto, sobreescribir el GetHashCode.

Saludos

-- 
Dario Quintana
http://blog.darioquintana.com.ar

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

Responder a