Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 2 da Aula 7 - Mão na Massa - Combo Box

Alguém consegue me ajudar a entender o porquê desse erro:

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

public Form1() { InitializeComponent(); }

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

Conta contaDoVictor = new Conta(); Cliente clienteVictor = new Cliente("Victor"); contaDoVictor.Titular = clienteVictor; contaDoVictor.Numero = 1; contas[0] = contaDoVictor;

Conta contaDoGuilherme = new Conta(); Cliente clienteGuilherme = new Cliente("Guilherme"); contaDoGuilherme.Titular = clienteGuilherme; contaDoGuilherme.Numero = 2; contas[1] = contaDoGuilherme;

Conta contaDoMauricio = new Conta(); Cliente clienteMauricio = new Cliente("Mauricio"); contaDoMauricio.Titular = clienteMauricio; contaDoMauricio.Numero = 3; contas[2] = contaDoMauricio;

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

private void comboContas_SelectedIndexChanged(object sender, EventArgs e) { Conta contaSelecionada = BuscaContaSelecionada(); textoTitular.Text = contaSelecionada.Titular.Nome; textoSaldo.Text = Convert.ToString(contaSelecionada.Saldo); textoNumero.Text = Convert.ToString(contaSelecionada.Numero); }

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

private void textBox1_TextChanged(object sender, EventArgs e) {

}

private void buttonDepositar_Click(object sender, EventArgs e) { Conta c = BuscaContaSelecionada(); String valorEmTexto = textoValor.Text; double valor = Convert.ToDouble(valorEmTexto); this.c.Deposita(valor); exibirInfo(c); }

private void buttonSacar_Click(object sender, EventArgs e) { Conta c = BuscaContaSelecionada(); String valorEmTexto = textoValor.Text; double valor = Convert.ToDouble(valorEmTexto); this.c.Saca(valor); exibirInfo(c); }

private Conta BuscaContaSelecionada() { int indiceSelecionado = comboContas.SelectedIndex; return this.contas[indiceSelecionado]; } } }

Erro: Ao clicar em depositar ou sacar aparece a mensagem: An unhandled exception of type 'System.NullReferenceException' occurred in Banco.exe

Alguém sabe como devo fazer para o corrigir?

1 resposta
solução!

Observe nos métodos Saca e Deposita, que você não fez uma validação para a instância "c", para saber se ela é realmente preenchida ou não (se está NULL). Outra coisa, você está usando "c" global e criando uma variável em tempo de execução nestes métodos com o mesmo nome, experimente alterar a forma que está fazendo, seja mudando nomes ou isolando mais as coisas, tirando aquele "c" global.