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

Dúvida Instância de classe

 public partial class Form1 : Form
    {
        Conta[] contas;
        public Form1()
        {
            InitializeComponent();
        }


        private void button1_Click(object sender, EventArgs e)
        {



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

            contas[0] = new Conta();
            contas[0].Numero = 1;
            contas[0].Titular = new Cliente();
            contas[0].Titular.Nome = "Anderson";

            contas[1] = new Conta();
            contas[1].Numero = 1;
            contas[1].Titular = new Cliente();
            contas[1].Titular.Nome = "Thalyson";
            foreach (Conta conta in contas)
            {
                comboBox1.Items.Add(conta.Titular.Nome);
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int index = comboBox1.SelectedIndex;

           //nesse ponto o valor do vetor de contas chega com o valor null

            Conta selecionada = contas[index];
            selecionada.Titular =  new Cliente();
            selecionada.Titular.Nome = contas[index].Titular.Nome;

            textoSaldo.Text = selecionada.Saldo.ToString();
            textoTitular.Text = selecionada.Titular.Nome;
            textoNumero.Text = selecionada.Numero.ToString();



        }
    }

Quando eu tento acessar os valores presentes no vetor de contas no evento "comboBox1_SelectedIndexChanged.." eu não consigo, pois o vetor está com valor null. Onde eu errei ? alguma sugestão ?

2 respostas
solução!

Olá Thalyson,

você declarou o vetor de contas como um atributo na linha 3 mas o redeclarou dentro do método Form1_Load. Assim, o C# entende que você quer utilizar a variável com o escopo mais reduzido: a do método.

Desse jeito, quando você acessa contas de um outro método, ele acessa o atributo declarado lá em cima, que nunca foi inicializado.

A solução é remover a declaração do Form1_Load ficando somente contas = new Conta[2];

Nossa, consegui aqui exatamente como você falou. Muito obrigado.