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
No answers yet.
Faça login para deixar uma resposta