Junior — Middle
Por que a classe .NET sobrescreve os métodos GetHashCode e Equals?
sobes.tech IA
Resposta da IA
No .NET, os métodos GetHashCode e Equals são redefinidos para uma comparação correta de objetos e funcionamento adequado com coleções como dicionários (Dictionary) e conjuntos (HashSet).
- Equals determina quando dois objetos são considerados iguais em significado.
- GetHashCode devolve um código numérico usado para procurar rapidamente um objeto em tabelas de hash.
Se apenas redefinir o Equals, mas não o GetHashCode, os objetos podem não funcionar corretamente em coleções hash. Normalmente, esses métodos são redefinidos juntos para garantir a coerência: se Equals retorna true para dois objetos, o seu GetHashCode deve retornar o mesmo valor.
Exemplo:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (obj is Person other)
return Name == other.Name && Age == other.Age;
return false;
}
public override int GetHashCode()
{
return HashCode.Combine(Name, Age);
}
}