Boa noite!
Fiz abaixo um pequeno programa para estudar o que foi passado na aula de Coleções e percebi que sempre que o programa entra no Foreach, para adicionar os items no combobox, ele automaticamente chama o métodos Equals(object obj) herdado da classe object. (tanto faz se eu uso uma List ou um hashcode) Então, na minha classe pessoa, colaborador e visitante sobrescrevi o método Equals, conforme abaixo:
public override bool Equals(object obj)
{
Pessoa pessoa = (Pessoa)obj;
return this.Rg == pessoa.Rg;
}
O problema é que sempre quando vai adicionar no combo box, ele está passando para o equals a referência nula. Não entendi o por quê. Alguém poderia me ajudar com essa dúvida?
private void Form1_Load(object sender, EventArgs e)
{
Colaborador[] colaboradores = new Colaborador[2];
colaboradores[0] = new Colaborador(1234,1444);
colaboradores[0].Nome = "Fernando";
colaboradores[0].Rg = "32293-1";
colaboradores[1] = new Colaborador(4321, 1555);
colaboradores[1].Nome = "Vanessa";
colaboradores[1].Rg = "2222222-2";
Visitante[] visitante = new Visitante[2];
visitante[0] = new Visitante(333, colaboradores[0]);
visitante[0].Nome = "José";
visitante[0].Rg = "2222222-2";
visitante[1] = new Visitante(222, colaboradores[1]);
visitante[1].Nome = "Juca";
visitante[1].Rg = "2222222-2";
var pessoas = new HashSet<Pessoa>();
pessoas.Add(colaboradores[0]);
pessoas.Add(colaboradores[1]);
pessoas.Add(visitante[0]);
pessoas.Add(visitante[1]);
foreach(Pessoa pessoa in pessoas)
{
cmbPessoa.Items.Add(pessoa);
cmbPessoa.DisplayMember = "Nome";
}
}
Obrigado =]