Sobes.tech
Junior — Middle

Por que é importante sobrescrever o método GetHashCode nas classes?

sobes.tech IA

Resposta da IA

A sobrescrita do método GetHashCode é importante para o funcionamento correto dos objetos em coleções baseadas em hash, como Dictionary, HashSet e outros.

Razões:

  • GetHashCode devolve um valor numérico usado para procurar rapidamente um objeto nas tabelas de hash.
  • Se dois objetos são considerados iguais (de acordo com o método Equals), eles devem devolver o mesmo código hash para que as coleções os tratem corretamente.
  • Se não sobrescrever GetHashCode juntamente com Equals, os objetos podem ser comparados de forma incorreta ou duplicados nas coleções.

Exemplo:

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);
    }
}

Dessa forma, a sobrescrita de GetHashCode garante a consistência com Equals e o funcionamento correto dos objetos em estruturas de hash.