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

NullReferenceException was unhandled - Na insersão do Nome do titular

No meu codigo estou precisando de inserir o nome no titular "contaDoVitor.Titular.Nome = "Victor";" quando compila aparece o NullReferenceException was unhandled.

Como faço para corrigir? pois não esta ficando da mesma forma que foi explicado no exercício.

public partial class Form1 : Form
    {
        private Conta [] conta;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            Conta contaDoVitor = new Conta();
            contaDoVitor.Titular.Nome = "Victor";
            contaDoVitor.Numero = 1;
            contaDoVitor.deposita(2500.0);

            Conta contaDoMario = new Conta();
            contaDoVitor.Titular.Nome = "Mario";
            contaDoVitor.Numero = 2;
            contaDoVitor.deposita(2800.0);



            this.conta = new Conta[2];
            this.conta[0] = contaDoVitor;
            this.conta[1] = contaDoMario;


            foreach (Conta c in conta)
            {
                comboContas.Items.Add(c.Titular);
            }



        }

        private void btExecutar_Click(object sender, EventArgs e)
        {
            int indexContaDepositar = comboContas.SelectedIndex;
            Conta contaDepositar = conta[indexContaDepositar];
            contaDepositar.deposita(Convert.ToDouble(textoValor.Text));

            MostraConta(contaDepositar);
            textoValor.Clear();

        }

        private void MostraConta(Conta indiceSelecionado)
        {
            textoTitular.Text = indiceSelecionado.Titular.Nome;
            textoSaldo.Text = Convert.ToString(indiceSelecionado.Saldo);
            textoNumero.Text = Convert.ToString(indiceSelecionado.Numero);
        }

        private void BtSacar_Click(object sender, EventArgs e)
        {
            int indexContaSacar = comboContas.SelectedIndex;
            Conta contaSacar = conta[indexContaSacar];
            contaSacar.saca(Convert.ToDouble(textoValor.Text));

            MostraConta(contaSacar);
            textoValor.Clear();
        }

        private void comboContas_SelectedIndexChanged(object sender, EventArgs e)
        {
            int indiceSelecionado = comboContas.SelectedIndex;
            Conta contaSeleconada = conta[indiceSelecionado];

            MostraConta(contaSeleconada);

        }
    }
 class Conta
    {
        public int Numero { get; set; }
        public Cliente Titular { get; set; }
        public int Agencia { get; set; }
        public double Saldo { get; protected set; }

        public double CalculaRendimentoAnual()
        {
            double saldoNaqueleMes = this.Saldo;

            for (int i = 0; i < 12; i++)
            {
                saldoNaqueleMes = saldoNaqueleMes * 1.007;
            }

            double rendimento = saldoNaqueleMes - this.Saldo;

            return rendimento;
        }


        public bool saca(double valorASacar)
        {
            if (valorASacar > this.Saldo || valorASacar < 0)
            {
                return false;
            }
            else if (Titular.EhMaiorDeIdade())
            {
                this.Saldo -= valorASacar;
                return true;
            }
            else if (valorASacar <= 200.00)
            {
                this.Saldo -= valorASacar;
                return true;
            }
            else
            {
                return false;
            }
        }


        public virtual void deposita(double valorADepositar)
        {
            if (valorADepositar >= 0)
            {
                this.Saldo += valorADepositar;
            }
        }

        public void transfere(double valorTransferido, Conta destino)
        {
            this.saca(valorTransferido);
            destino.deposita(valorTransferido);

        }
    }
 class Cliente
    {
        public string Nome { get; set; }
        public string Rg { get; set; }
        public string Cpf { get; set; }
        public string Endereco { get; set; }
        public int Idade { get; set; }

        public bool EhMaiorDeIdade()
        {
            return this.Idade >= 18;

        }

        public Cliente(string nome)
        {
            this.Nome = nome;
        }

        public Cliente()
        {
        }
    }
2 respostas

Cara não entendo da linguagem c, mais não seria na hora de instanciar um objeto? por exemplo no atributo vetor do tipo conta.

 private Conta [] conta

Isso aqui no c é um vetor né? nao teria um new conta? algo do tipo aqui?

solução!

Faltou instancia um novo cliente no meu código

 private void Form1_Load(object sender, EventArgs e)
        {

            Conta contaDoVitor = new Conta();
                **contaDoVitor = new Cliente();**
            contaDoVitor.Titular.Nome = "Victor";