[C#] Referência de objeto não definida para uma instância de um objeto. ~ help

5 respostas
csharp
W

Então galera… venho estudando csharp e alguma coisa basica me fez dar uma parada por ficar perdendo tempo para resolver um problema que não resolvi até agora.

o código que fiz é:

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 _1
{
	public partial class Form1 : Form
	{
		private Conta c;


		public Form1()
		{
			InitializeComponent();

		}

		private void textBox1_TextChanged(object sender, EventArgs e)
		{
		
		}

		private void Form1_Load(object sender, EventArgs e)
		{
			Conta c = new Conta();
			c.Numero = 1;
			Cliente LD = new Cliente("Joao guilher");
			c.Titular = LD;
			textoTitular.Text = c.Titular.Nome;


			textoNumero.Text = Convert.ToString(c.Numero);
			textoSaldo.Text = Convert.ToString(c.Saldo);
		}

		private void textBox1_TextChanged_1(object sender, EventArgs e)
		{

		}

		private void button1_Click(object sender, EventArgs e)
		{
			string valorDigitado = textoValor.Text;
			double valorOperacao = Convert.ToDouble(valorDigitado);
			this.c.Deposita(valorOperacao);
			textoSaldo.Text = Convert.ToString(this.c.Saldo);
			MessageBox.Show("Sucesso");
		}

		private void botaoSaque_Click(object sender, EventArgs e)

		{
			string valorDigitado = textoValor.Text;
			double valorOperacao = Convert.ToDouble(valorDigitado);
			this.c.Saca(valorOperacao);
			textoSaldo.Text = Convert.ToString(this.c.Saldo);
			MessageBox.Show("Sucesso");
		}
	}
}

não mostra erro nem nada, consigo compilar e tudo, porém quando click no botão(há 4 text box e 2 botões, um com a função sacar e outra depositar) “sacar” ou até mesmo no “depositar” ele me indica uma caixinha dizendo

"System.NullReferenceException: ‘Referência de objeto não definida para uma instância de um objeto.’"
Eu já chequei tudo e não consigo entender o erro nisso
e no caso com esse erro, após ele o programa não roda mais, para de ser compilado e não executa a função que era retirar o saque do preço que digitei no text box ou depositar o valor que digitei no textbox
é isso ): se alguém puder dar uma força, agradecidoo já estou

5 Respostas

javaflex

Você nao instanciou esse objeto c no contexto esperado.

Ao invés disso:

Conta c = new Conta();

talvez você esteja querendo fazer isso no formload ou construtor:

c = new Conta();

Que material de ensino está seguindo? Recomendo se direcionar por algo antes de sair fazendo.

W

AAAAAAAAA CARA VALEU
eu ja havia pesquisado sobre mas era muito fora do contexto do meu código e não consegui enxergar isso
eu tô sendo direcionado sim, pelo ‘curso’ do caelum, vou dar uma checada se ele insiste que eu digite “conta c = new Conta();” ou “c = new Conta();” por que tô acompanhando e fazendo sacas? ):

W

https://www.caelum.com.br/apostila-csharp-orientacao-objetos/introducao-ao-visual-studio-com-windows-form/#introduo-prtica-aos-atalhos-do-visual-studio

Olha ai, ele realmente diz lá pra por “conta c = new conta ();”… kkk desanimei de continuar acompanhando por essa apostila agora
tem alguma pra me indicar?

javaflex

A apostila está certa:

public class Form1 : Form
    {
        private Conta c;

        // resto da classe do formulário.
    }


    private void Form1_Load(object sender, EventArgs e)
    {
        // Cria uma nova conta e guarda sua referência no atributo do formulário
        this.c = new Conta();

        // inicializa e mostra a conta no formulário
    }

E seria essa apostila mesmo que eu ia te indicar.

W

foi falta de atenção então, achei que já tinha ‘instanciado’ o private Conta c;
valeu pela ajuda <3

Criado 5 de outubro de 2018
Ultima resposta 16 de out. de 2018
Respostas 5
Participantes 2