Sobes.tech
Junior — Middle

Quais passos devem ser seguidos para usar uma classe própria como chave numa coleção do tipo dicionário?

sobes.tech IA

Resposta da IA

Para usar uma classe personalizada como chave num dicionário (Dictionary<TKey, TValue>) em C#, é necessário garantir uma comparação correta das chaves e o cálculo dos seus códigos hash. Para isso, deve-se:

  1. Sobrescrever o método Equals(object obj) de modo que compare corretamente os objetos da sua classe pelos campos relevantes.
  2. Sobrescrever o método GetHashCode() para que objetos considerados iguais tenham o mesmo código hash.

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

Alternativamente, pode-se implementar a interface IEqualityComparer<T> e passá-la ao construtor do dicionário, caso não queira alterar a própria classe.