Si no se sobreescribe GetHashCode
, cualquier cosa que compara los objetos pueden hacerlo mal.
Como está documentado que GetHashCode
debe devolver el mismo valor si dos instancias son iguales, entonces es prerrogativa de cualquier código que desee probar su igualdad para usar GetHashCode
como primer paso para agrupar objetos que pueden ser iguales (ya que sabe que los objetos con diferentes códigos hash no pueden ser iguales). Si su método GetHashCode
devuelve valores diferentes para objetos iguales, es posible que entren en diferentes grupos en la primera pasada y nunca se comparen utilizando su método Equals
.
Esto podría afectar a cualquier estructura de datos de tipo colección, pero sería particularmente problemático en los basados en código hash como diccionarios y conjuntos de hash.
En resumen: siempre anule GetHashCode
cuando invalide Equals
, y asegúrese de que sus implementaciones sean consistentes.
gracias por aclarar eso. –
¿Cómo determina la implementación cuántos cubos usar? ¿Es este un valor fijo? –