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

Erro de compilação.

Boa noite,

O compilador está gerando uma exceção (no formulário) quando tento utilizar o código abaixo:

this.conta.Titular.nome = "Camila";

Dá esse erro:

An unhandled exception of type 'System.NullReferenceException' occurred in CaixaEletronico.exe

Additional information: Referência de objeto não definida para uma instância de um objeto.

Código da Classe Conta

using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CaixaEletronico
{
    class Conta
    {
        public int Numero { get; set; }
        public Cliente Titular { get; set; }
        public double Saldo { get; private set; }

      // demais linhas ocultadas
    }
}

Código da Classe Cliente

namespace CaixaEletronico
{
    class Cliente
    {
        public string nome;
        public string rg;
        public string cpf;
        public string endereco;
        public int idade;
    }
}

Código do formulario

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CaixaEletronico
{
    public partial class Form1 : Form
    {
        private Conta conta;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.conta = new Conta();
            this.conta.Titular.nome = "Camila";
            this.conta.Numero = 1;
            this.conta.Deposita(250.0);

            textoTitular.Text = this.conta.Titular.nome;

            this.MostraConta();
        }

        private void buttonDeposita_Click(object sender, EventArgs e)
        {
            string valorDepositadoStr = textoValor.Text;
            double valorDepositado = Convert.ToDouble(valorDepositadoStr);
            this.conta.Deposita(valorDepositado);

            this.MostraConta();
        }

        private void MostraConta()
        {
            textoNumero.Text = Convert.ToString(this.conta.Numero);
            textoSaldo.Text = Convert.ToString(this.conta.Saldo);
        }

        private void btnSacar_Click(object sender, EventArgs e)
        {
            string valorSacadoStr = textoValor.Text;
            double valorSacado = Convert.ToDouble(valorSacadoStr);
            bool retorno = this.conta.Saca(valorSacado);

            if (!retorno)
            {
                MessageBox.Show("Saque não realizado. Saldo insuficiente.");
            }

            this.MostraConta();
        }
    }
}
4 respostas

Olá Camila, tudo bem?

Quando ocorre o erro de NullReference quer dizer que alguma variável de referência está com valor nulo dentro dela.

No caso da linha this.conta.Titular.nome isto pode ocorrer em duas variáveis: na variável conta (que guarda a referência para um objeto do tipo Conta) ou na Titular (que guarda a referência para um objeto do tipo Cliente).

Se você observar o código do formulário, você verá que a Conta foi instanciada mas o Cliente não. Você precisa instanciá-lo antes de tentar acessar o nome para fazer a atribuição.

Abraço!

Bom dia Joviane,

Fiz a instancia abaixo e continua com o mesmo erro de compilação. Tenho que fazer mais alguma alteração?

private void Form1_Load(object sender, EventArgs e)
        {
            // instancia de cliente
            Cliente cliente = new Cliente();
                // instancia de cliente
            this.conta = new Conta();
            this.conta.Titular.nome = "Camila";
            this.conta.Numero = 1;
            this.conta.Deposita(250.0);

            textoTitular.Text = this.conta.Titular.nome;

            this.MostraConta();
        }
solução!

Oi Camila,

Faltou atribuir o conteúdo da variável cliente para o atributo Titular da conta:

this.conta.Titular = cliente;

Abraço!

Agora funcionou, muito obrigada ;-)