Avatar ·

Por que é importante sobrescrever GetHashCode ao sobrescrever Equals em C#?

Olá a todos! Sou um desenvolvedor C# iniciante e fiquei confuso com os métodos Equals e GetHashCode. Criei uma classe simples `Person` com os campos `Name` e `Age`. Preciso que dois objetos sejam considerados iguais se esses campos coincidirem. Por isso, sobrescrevi o método `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; } } ``` Tudo funciona perfeitamente quando comparo objetos diretamente: `person1.Equals(person2)` retorna `true` para dados idênticos. Mas quando tentei usar esta classe em um `HashSet`, notei um comportamento estranho. Mesmo que dois objetos `Person` contenham os mesmos Name e Age, o `HashSet` os considera diferentes e adiciona ambos. Por exemplo: ```csharp Hash