Sobes.tech
Junior — Middle

Qual é a razão e a necessidade de sobrescrever o método Equals() na sua classe?

sobes.tech IA

Resposta da IA

Sobrescrever o método Equals() numa classe é necessário para comparar objetos pela igualdade de significado, e não por referência.

Por padrão, o método Equals() na classe object compara referências (endereços na memória), ou seja, duas instâncias diferentes são consideradas diferentes, mesmo que o seu conteúdo seja igual.

Se na sua classe a lógica de comparação pelos valores dos campos for importante (por exemplo, na classe Person — por nome e data de nascimento), então deve sobrescrever Equals() para comparar exatamente esses campos.

Exemplo de sobrescrita:

public class Person
{
    public string Name { get; set; }
    public DateTime BirthDate { get; set; }

    public override bool Equals(object obj)
    {
        if (obj is Person other)
        {
            return Name == other.Name && BirthDate == other.BirthDate;
        }
        return false;
    }

    public override int GetHashCode()
    {
        return HashCode.Combine(Name, BirthDate);
    }
}

Também é importante sobrescrever GetHashCode() para que objetos considerados iguais tenham o mesmo código hash, o que é importante para o funcionamento correto de coleções como Dictionary ou HashSet.