Sobes.tech
Junior — Middle

Pourquoi la classe .NET redéfinit-elle les méthodes GetHashCode et Equals?

sobes.tech IA

Réponse de l'IA

Dans .NET, les méthodes GetHashCode et Equals sont redéfinies pour une comparaison correcte des objets et un fonctionnement approprié avec des collections telles que les dictionnaires (Dictionary) et les ensembles (HashSet).

  • Equals détermine quand deux objets sont considérés comme égaux en sens.
  • GetHashCode renvoie un code numérique utilisé pour rechercher rapidement un objet dans les tables de hachage.

Si vous ne redéfinissez que Equals, mais pas GetHashCode, les objets peuvent ne pas fonctionner correctement dans les collections de hachage. Ces méthodes sont généralement redéfinies ensemble pour assurer la cohérence : si Equals retourne true pour deux objets, leur GetHashCode doit retourner la même valeur.

Exemple :

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