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

Erro System.NullReferenceException: Atividade Sacando com limites - Classe Conta

Olá, o código descrito abaixo está com um erro em " if (this.titular.EhMaiorDeIdade()) ", o erro que aparece é " System.NullReferenceException: 'Referência de objeto não definida para uma instância de um objeto.' ".

O código etá sendo executado na classe Conta exatamente como na atividade Sacando com limites, porem não tenho ideia do que posso fazer para acabar com essa mensagem.

Ao analisar com o código da atividade aparenta estar igual.

Espero que consigam me ajudar.

public bool Saca(double valorASerSacado)
        {
            if (valorASerSacado > this.saldo || valorASerSacado <= 0)
            {
                return false;
            }
            else
            {
                if (this.titular.EhMaiorDeIdade())
                {
                    this.saldo -= valorASerSacado;
                    return true;
                }
                else
                {
                    if (valorASerSacado <= 200)
                    {
                        this.saldo -= valorASerSacado;
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
            }

        }
4 respostas

Oi Igor,

Você pode postar aqui o código do formulário principal?

Talvez esteja faltando associar a Conta com o Titular.

No exemplo da opiniao do instrutor desse exercício, é essa linha que faz a associação:

contaGuilherme.titular = clienteGuilherme;

Olá, Igor.

Como está o código do seu formulário principal?

O ponto mais importante é o que relaciona a conta ao cliente:

        contaGuilherme.titular = clienteGuilherme;

Se não houver essa ligação entre conta e cliente, o titular ficaria nulo. Isso explicaria o NullReferenceException.

O código no formulário principal é este abaixo, mas a conta já está associada ao cliente.

private void button1_Click(object sender, EventArgs e)
        {
            Conta contaGuilherme = new Conta();


            Cliente clienteGuilherme = new Cliente();

            contaGuilherme.saldo = 1500.0;
            contaGuilherme.Saca(200);
            clienteGuilherme.idade = 17;
            clienteGuilherme.nome = "Guilherme";

            contaGuilherme.titular = clienteGuilherme;

            if (clienteGuilherme.EhMaiorDeIdade())
            {
                MessageBox.Show(contaGuilherme.titular.nome + " é de maior \nSaldo atual: " + contaGuilherme.saldo);
            }
            else
            {
                MessageBox.Show(contaGuilherme.titular.nome + " é de menor \nSaldo atual: " + contaGuilherme.saldo);
            }
solução!

Igor,

Acho que você chamou o método Saca(), que usa informações do cliente, antes de associar a conta ao cliente. Também é preciso definir as informações da conta e do cliente antes de chamar o método.

             Conta contaGuilherme = new Conta();

            Cliente clienteGuilherme = new Cliente();

            contaGuilherme.saldo = 1500.0;
            clienteGuilherme.idade = 17;
            clienteGuilherme.nome = "Guilherme";

            contaGuilherme.titular = clienteGuilherme;

        //chamando o saca() depois da associação
            contaGuilherme.Saca(200);