Minha classe Cliente: public class Cliente { //Auto implemented properties public string Nome { get; set; } public int Idade { get; set; } //Propriedade que retorna TRUE se Idade for maior que 18 public bool MaiorDeIdade { get { return this.Idade >= 18; } } //Propriedade implementada manualmente, permite maior controle do que acontece quando é definida ou lida private string cpf; public string Cpf { get { return cpf; } set { cpf = value; } } //Construtor de classe que obriga a passagem do parâmetro quando a classe é instanciada, ou executa uma ação quando iniciada public Cliente(string nome, int idade=18) { this.Nome = nome; this.Idade = idade; } //Este construtor é adicionado para permitir instanciar a classe sem informar o parâmetro nome public Cliente() {
} public override bool Equals(Object obj) { Cliente outroCliente = (Cliente)obj; return this.Nome == outroCliente.Nome && this.Cpf == outroCliente.Cpf; } public override string ToString() { return this.Nome; }
}
Ao executar o seguinte trecho, o mesmo retorna False. Alguém saberia me dizer o porque?
Cliente c1 = new Cliente(); c1.Cpf = "1234-5"; c1.Nome = "Ricardo";
Cliente c2 = new Cliente(); c1.Cpf = "1234-5"; c1.Nome = "Ricardo";
MessageBox.Show("São iguais? "+ c1.Equals(c2));