Sobes.tech
Junior — Middle

Quel est le rôle de la méthode GetHashCode lors de l'utilisation d'un dictionnaire ou d'une collection de hachage?

sobes.tech IA

Réponse de l'IA

La méthode GetHashCode joue un rôle clé dans l'utilisation des dictionnaires (Dictionary) et d'autres collections de hachage en C#. Elle renvoie une valeur entière (code de hachage) utilisée pour déterminer rapidement la position d'un objet dans la table de hachage.

Lorsque vous ajoutez un objet à un dictionnaire, GetHashCode est d'abord appelé pour déterminer la case (bucket) dans laquelle l'élément sera placé. Lors de la recherche d'un élément par clé, le code de hachage est également calculé en premier pour trouver rapidement la bonne case, puis Equals est appelé pour une comparaison précise.

Il est important que :

  • Si deux objets sont égaux (Equals retourne true), alors leurs GetHashCode doivent retourner la même valeur.
  • Des codes de hachage bien répartis réduisent le nombre de collisions et améliorent la performance.

Exemple de redéfinition :

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);
    }
}