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 - 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.