Sobes.tech
Junior — Middle

¿Cómo afecta el método GetHashCode al funcionamiento del diccionario en .NET?

sobes.tech AI

Respuesta de la IA

El método GetHashCode en .NET se utiliza para obtener el código hash de un objeto, que se aplica en tablas hash, por ejemplo, en diccionarios (Dictionary<TKey, TValue>).

Cuando agregas un objeto a un diccionario, primero se llama a GetHashCode para determinar la cubeta (bucket) donde se almacenará. Al buscar un objeto, el diccionario usa el código hash para acceder rápidamente.

Es importante que:

  • Si dos objetos son iguales (según el método Equals), sus códigos hash deben coincidir.
  • Si los códigos hash difieren, los objetos se consideran diferentes.

Una implementación incorrecta de GetHashCode puede hacer que el diccionario no pueda encontrar una clave, incluso si está allí, o reducir el rendimiento debido a un gran número de colisiones.

Ejemplo de una implementación correcta:

public 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, GetHashCode afecta la corrección y eficiencia del trabajo del diccionario.