Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

C# - módulo 8 - NullReferenceException

Estou no módulo 8 do curso de C# e na parte do curso em que criamos uma classe chamada CLIENTE, com os dados do cliente, o instrutor diz que pudemos chamar a classe da seguinte forma:

Conta BrunoConta = New Conta(); // conta essa que CONTÉM a classe cliente
Cliente cliente = new Cliente();

E para acessar esses dados, ele ensina de duas formas, a primeira é:

conta.cliente = cliente;
cliente.nome = "Bruno";

O código acima funciona, se eu tentar mostrar no MessageBox.Show ele mostra, porém, o instrutor diz que podemos fazer A MESMA coisa, com o comando seguinte:

conta.cliente.nome = "Bruno";

Só que aqui não esta funcionando e retorna um erro estranho, segue abaixo o código completo:

 private void button1_Click(object sender, EventArgs e)
        {
            Conta contabruno = new Conta();
            Cliente cliente = new Cliente();
            contabruno.cliente.nome = "Bruno";

            MessageBox.Show("Nome: " + contabruno.cliente.nome);
        }
2 respostas
solução!

Oi Bruno. O erro estranho deve ser o NullReference correto? Ele vai aparecer com bastante frequência no seu código e é importante entender.

Quando você fez:

Conta contabruno = new Conta();
Cliente cliente = new Cliente();

Ainda não há relação entre a conta criada e o cliente criado. Isso é, essa conta não tem cliente, ela está se referenciando par ao cliente null.

Quando você faz

contabruno.cliente.nome = "Bruno";

Ele está tentando mudar o nome de uma referência nula, causando essa exception que você enfrentará muitas vezes.

O que o instrutor quis dizer é que esses dois abaixo sao equivalentes, mas sempre depois de relacionar a conta com o cliente. Estou renomeando cliente para não ficar confuso com o nome do atributo:

Conta contabruno = new Conta();
Cliente bruno = new Cliente();
contabruno.cliente = bruno; //cliente da conta não é mais null

contabruno.cliente.nome = "Bruno";

Aqui o equivalente, acessandro através da referência bruno:

Conta contabruno = new Conta();
Cliente bruno = new Cliente();
contabruno.cliente = bruno; //cliente da conta não é mais null

bruno.nome = "Bruno";

Era esse o erro mesmo, entendi, muito obrigado Paulo!