Sobes.tech
Junior — Middle

¿Por qué es importante sobrescribir el método GetHashCode en las clases?

sobes.tech AI

Respuesta de la IA

La sobrescritura del método GetHashCode es importante para el correcto funcionamiento de los objetos en colecciones basadas en hash, como Dictionary, HashSet y otros.

Razones:

  • GetHashCode devuelve un valor numérico que se utiliza para buscar rápidamente un objeto en las tablas hash.
  • Si dos objetos se consideran iguales (según el método Equals), deben devolver el mismo código hash para que las colecciones los manejen correctamente.
  • Si no se sobrescribe GetHashCode junto con Equals, los objetos pueden compararse de manera incorrecta o duplicarse en las colecciones.

Ejemplo:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public override bool Equals(object obj)
    {
        if (obj is Person other)
            return Name == other.Name && Age == other.Age;
        return false;
    }

    public override int GetHashCode()
    {
        return HashCode.Combine(Name, Age);
    }
}

De esta manera, la sobrescritura de GetHashCode garantiza la coherencia con Equals y el funcionamiento correcto de los objetos en las estructuras hash.