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

Erro de Compilação - Referencia de um objeto não definida para instância de um objeto

Ola Professores e colegas do Alura, estou tentando fazer esse exercício e estou tendo uma dificuldade para executar meu código.

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 Banco_com_Array
{
    public partial class Form1 : Form
    {
        private Conta[] contas;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            contas = new Conta[2];

            contas[0] = new Conta();
            contas[0].Numero = 1;
            contas[0].Titular.Nome = "Raphael";
            contas[0].Saldo = 0.0;


            contas[1] = new Conta();
            contas[1].Numero = 2;
            contas[1].Titular.Nome = "Caroline";
            contas[1].Saldo = 0.0;

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

        }

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

            textBox1.Text = contaSelecionada.Titular.Nome;
            textBox2.Text = Convert.ToString(contaSelecionada.Numero);
            textBox3.Text = Convert.ToString(contaSelecionada.Saldo);
        }
    }

}

O erro ocorre nessa linha 'contas[0].Titular.Nome = "Raphael";', vendo outros exemplos de exercícios que fiz com vocês vi que temos que instanciar a classe Conta e a classe Cliente sempre, pois senão dará erro de compilação, mas nesse caso como estou trabalhando com um array, como eu poderia instanciar a classe Cliente????

4 respostas
solução!

Antes de fazer

contas[0].Titular.Nome = "Raphael";

Você precisa mesmo instanciar um Cliente e fazer com que o "titular da primeira conta" se referencie para ele:

contas[0].Titular = new Cliente();
contas[0].Titular.Nome = "Raphael";

Vou quebrar em mais linhas, com mais variáveis temporárias, só para você enxergar com mais facilidade o que aconteceu:

Cliente novo = new Cliente();
contas[0].Titular = novo;
contas[0].Titular.Nome = "Raphael";

Olá Paulo,

Estou com o mesmo problema que o Raphael teve. Tentei como o teu exemplo:

contas[0].Titular = new Cliente(); contas[0].Titular.Nome = "Raphael";

e parei de obter erros, porem no desencandeamento do programa, só aparece:

"CaixaEletronico.Cliente"

em todos os campos que provem da classe Cliente, como por exemplo no comboContas, txtTitular e no txtSaldo e só no txtNumero é que aparece correcto.

Pode ajudar me por favor?

Desde já, muitissimo obrigado :)

Oi Graziela, abre um novo tópico e posta o seu código pra gente?

Oi Paulo,

Obrigado, vou fazer isto agora entao :)