Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

HashSet com Objetos "iguais"

Tenho o seguinte código:

 class NovoMain {

        public static void Main(string[] args) {
            ISet<Teste> novoSet = new HashSet<Teste>();
            novoSet.Add(new Teste() { nome = "Mama", idade = 1 });
            novoSet.Add(new Teste() { nome = "lala", idade = 2 });
            novoSet.Add(new Teste() { nome = "tata", idade = 3 });
            novoSet.Add(new Teste() { nome = "papa", idade = 4 });
            novoSet.Add(new Teste() { nome = "tata", idade = 3 });
            Console.WriteLine(string.Join(", ", novoSet));
            Console.ReadLine();
        }
    }

    class Teste {
        public string nome;
        public int idade;

        public override string ToString() {
            return nome + "-" + idade;
        }
    }

O HashSet não "adivinhou" que o "tata" está repetindo. Como eu poderia fazer para que ele identificasse isso e não deixa-se adicionar no HashSet?

1 resposta
solução!

Olá, Luan

Atualmente, o resultado é este:

Mama-1, lala-2, tata-3, papa-4, tata-3

Você precisa implementar os métodos Equals() e GetHashCode() para o hashset identificar os objetos corretamente.

Você não precisa ter o trabalho de criá-los manualmnte. Coloque o cursor sobre o nome da classe Teste e escolha o menu "Generate Equals and GetHashCode". Clique em ok para gerar esses métodos.

Rode o programa de novo e veja o resultado:

Mama-1, lala-2, tata-3, papa-4