Comment la méthode GetHashCode influence-t-elle le fonctionnement du dictionnaire dans .NET?
sobes.tech IA
Réponse de l'IA
La méthode GetHashCode en .NET est utilisée pour obtenir le code de hachage d’un objet, qui est utilisé dans les tables de hachage, par exemple dans les dictionnaires (Dictionary<TKey, TValue>).
Lorsque vous ajoutez un objet à un dictionnaire, GetHashCode est d’abord appelé pour déterminer la case (bucket) où il sera stocké. Lors de la recherche d’un objet, le dictionnaire utilise le code de hachage pour un accès rapide.
Il est important que :
- Si deux objets sont égaux (selon la méthode
Equals), leurs codes de hachage doivent correspondre. - Si les codes de hachage diffèrent, les objets sont considérés comme différents.
Une mauvaise implémentation de GetHashCode peut faire en sorte que le dictionnaire ne puisse pas trouver une clé, même si elle est présente, ou réduire la performance en raison d’un grand nombre de collisions.
Exemple d’une implémentation correcte :
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);
}
}
Ainsi, GetHashCode influence la correction et l’efficacité du dictionnaire.