Como obter o HashCode de uma Coleção (List), em .NET?


Hoje tive um pequeno problema para resolver e acabei percebendo algumas coisas interessantes. Eu precisei comparar se duas List<T> são iguais e percebi que não teria uma solução nativa para mim. Normalmente eu sobrescrevo oGetHashCode e crio meu Hash, mas neste caso é diferente.

Acabei criando uma solução que vale para qualquer List, veja só:
public static int GetHashCode<T>(this List<T> l)
{
int hash = 0;
foreach (T item in l)
{
hash ^= item.GetHashCode();
}
return hash;
}

É importante frizar: O tipo T tem que sobrescrever o GetHashCode, se não for umBuilt-in Type. Por exemplo:
public class Pessoa
{
int idade { get; set; }
string nome { get; set; }
public override int GetHashCode()
{
return idade ^ nome.GetHashCode();
}
}
List<Pessoa> pessoas = obterPessoas(); // Obtem 150 pessoas aleatórias
Int hash = pessoas.GetHashCode<Pessoa>();


Thiago Anselme
Thiago Anselme - Gerente de TI - Arquiteto de Soluções

Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.

Deixe um comentário