Avatar ·

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

Bonjour à tous ! J'ai commencé à apprendre C# et je suis tombé sur une situation que je ne comprends pas. J'ai une classe simple `Person` avec les champs `Name` et `Age`. Je veux que deux objets soient considérés comme égaux s'ils ont les mêmes champs. J'ai donc redéfini la méthode `Equals` dans ma classe. Voici un exemple de code : ```csharp 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 lors de la comparaison avec `Equals`. Mais j'ai remarqué que Visual Studio affiche un avertissement : `'Person' overrides Object.Equals(object) but does not override Object.GetHashCode()`. J'ai lu qu'il faut redéfinir `GetHashCode`, mais je ne comprends pas pourquoi. Puisque ma logique de comparaison fonctionne déjà. Pouvez-vous expliquer avec un exemple simple ce qui pourrait se casser ?