Avatar ·

Pourquoi est-il important de redéfinir GetHashCode lors de la redéfinition de Equals en C#?

Bonjour à tous! Je suis un développeur C# débutant, et j'ai une confusion avec les méthodes Equals et GetHashCode. J'ai créé une classe simple `Person` avec les champs `Name` et `Age`. J'ai besoin que deux objets soient considérés comme égaux s'ils ont les mêmes valeurs dans ces champs. J'ai donc redéfini la méthode `Equals`: ```csharp public class Person { public string Name { get; set; } public int Age { get; set; } public override bool Equals(object obj) { if (obj == null || GetType() != obj.GetType()) return false; Person other = (Person)obj; return Name == other.Name && Age == other.Age; } } ``` Tout fonctionne parfaitement lorsque je compare les objets directement: `person1.Equals(person2)` retourne `true` pour des données identiques. Mais quand j'ai essayé d'utiliser cette classe dans un `HashSet`, j'ai remarqué un comportement étrange. Même si deux objets `Person` contiennent les mêmes Name et Age, le `HashSet` les considère comme différents et les ajoute tous les deux. Par exemple: ```csharp Hash