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

Referência de objeto não definida

Olá, estou tentando fazer o exercício com Arrays, porém meu código só funciona quando eu coloco o índice do Arrays exatamente igual ao das contas que eu criei, se eu colocar 2 no lugar de 10 no array de contas ele funciona.

Mas mantendo o 10 ele diz que a referência de objeto não está definida.

        contas = new Conta[10];

                ContaCorrente contaDoRudson = new ContaCorrente();
                contaDoRudson.Titular = new Cliente();
                contaDoRudson.Titular.Nome = "Rudson";
                contaDoRudson.Numero = 1;
                contas[0] = contaDoRudson;

                ContaCorrente contaDaJosiane = new ContaCorrente();
                contaDaJosiane.Titular = new Cliente();
                contaDaJosiane.Titular.Nome = "Josiane";
                contaDaJosiane.Numero = 2;
                contas[1] = contaDaJosiane;


            for (int i = 0; i < contas.Length; i++)
            {
                comboContas.Items.Add("Nomes: " + contas[i].Titular.Nome);
                destinoDaTransferencia.Items.Add("Nomes: " + contas[i].Titular.Nome);

            }

Se puderem me ajudar eu agradeço!

2 respostas
solução!

Prezado Rudson,

O seu código está correto.

O erro que você está tendo é devido você ter criado um array de 10 posições, que ficou assim:

contas = new Conta[10];

E quando você executa o "for", você está pedindo para o Loop ir até o número anterior ao tamanho de posições do seu array na seguinte cláusula:

i < contas.Length

Assim, você está dizendo para o "for" ir de 0 a 9, e quando a execução tenta acessar a posição [2] do array ocorre o erro.

Desta forma, ou você preenche todas as 10 posições do array, ou você modifica o "for" para i < 2.

Uma opção interessante é testar dentro do "for" se a posição é nula e depois sair do "for":

for (int i = 0; i < contas.Length; i++){
if (contas[i] == null) {
        break;
}
comboContas.Items.Add("Nomes: " + contas[i].Titular.Nome);
destinoDaTransferencia.Items.Add("Nomes: " + contas[i].Titular.Nome);
}

Muito obrigado Herbet, ajudou muito!