3
respostas

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

Oi Pessoal, Eu já havia resolvido em exercícios anteriores esta implementação, mas por que, o meu exemplo do exercício, da certo de uma forma contas[0].Titular = new Cliente("Victor"); como vi de um colega, e não da certo com este contas[0].Titular.Nome = "Victor"; Na classe conta eu tenho o public Cliente Titular { get; set; }, o que dá certo no exercício esta comentado com // duas barras, ainda persiste o erro Additional information: Referência de objeto não definida para uma instância de um objeto. Gostaria de entender melhor no c#.

namespace CaixaEletronico_Exercicio
{
    public partial class Form1 : Form
    {
        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 = "Victor";
            //contas[0].Titular = new Cliente("Victor");

            contas[1] = new Conta();
            contas[1].Numero = 2;
            contas[1].Titular.Nome = "Mario";
            //contas[1].Titular = new Cliente("Mario");

            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];
            textoTitular.Text = contaSelecionada.Titular.Nome;
            textoSaldo.Text = Convert.ToString(contaSelecionada.Saldo);
            textoNumero.Text = Convert.ToString(contaSelecionada.Numero);
        }
    }
}
3 respostas

O Atributo "NOME" é público ? O TITULAR está sendo iniciado com "new"dentro da classe?

Correto Gabriel,

O atributo Nome é público na classe cliente -> public string Nome { get; set; }. E na classe Conta tem -> public Cliente Titular { get; set; }, fico no aguardo e obrigado.

Desta forma dá certo porque você está inicializando o objeto:

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

Desta forma não é possível porque o objeto do tipo Titular não foi criado com o new:

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

Por isto o erro aparece: "Referência de objeto não definida para uma instância de um objeto. "

Mas, você pode fazer também desta forma também:

contas[0].Titular = new Cliente(); // criar objeto
contas[0].Titular.Nome = "Victor"; // atribuir valor

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software