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 ?