Junior — Middle
¿En qué consiste el papel del método GetHashCode al usar un diccionario o una colección hash?
sobes.tech AI
Respuesta de la IA
El método GetHashCode juega un papel clave en el uso de diccionarios (Dictionary) y otras colecciones hash en C#. Devuelve un valor entero (código hash) que se utiliza para determinar rápidamente la posición de un objeto en la tabla hash.
Cuando añades un objeto a un diccionario, primero se llama a GetHashCode para determinar la cubeta (bucket) en la que se colocará el elemento. Al buscar un elemento por clave, también se calcula primero el código hash para encontrar rápidamente la cubeta necesaria, y luego se llama a Equals para una comparación exacta.
Es importante que:
- Si dos objetos son iguales (Equals devuelve true), entonces sus GetHashCode deben devolver el mismo valor.
- Los códigos hash bien distribuidos reducen las colisiones y mejoran el rendimiento.
Ejemplo de sobrescritura:
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);
}
}