3
respostas

Erro em variavel nao declarada

Olá pessoal,

Mais uma dúvida :)

Estou tentado resolver estes exercicios, mas tenho encontrado algumas dúvidas, como a seguinte linha de código:

    this.MostraConta(contaSelecionada);

Neste link da Alura está o exercicio e código completo https://cursos.alura.com.br/course/csharp/section/7/task/3/analyse

Muitissimo agradecida pelo apoio :)

3 respostas

Olá Graziela,

Repare que aqui inicializamos os objetos Conta do array contas.

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

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

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

e logo antes de chamar aquela linhaque você mencionou, criamos a variavel contaSelecionada do tipo Conta, e atribuímos a ela o objeto do tipo Conta (pelo indice) do array contas.

    int indiceSelecionado = comboContas.SelectedIndex;
    Conta contaSelecionada = this.contas[indiceSelecionado];

    this.MostraConta(contaSelecionada);

Verifique se essas partes estão no seu código (:

Se a dúvida persistir, ponha seu código aqui para analisarmos melhor.

Olá Lucas,

Muitissimo agradecida pela a ajuda. Segue o meu código para que possa dar uma olhada por favor :)

Tenho tudo o q vc mencionou

using System;
using System.Windows.Forms;

namespace CaixaEletronico.Views
{
    public partial class Titular : Form
    {
        Conta[] contas;
        public Titular()
        {
            InitializeComponent();
        }

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

            contas[0] = new Conta();
            contas[0].Numero = 1; contas[0].Nome = "Conta Corrente";
            contas[0].Titular = new Cliente();
            contas[0].Titular.Nome = "Vitor";
            contas[0].Saldo= 1000;

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

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

        }

        private void comboContas_SelectedIndexChanged(object sender, EventArgs e)
        {
            string titularSelecionado = comboContas.Text;
            Conta contaSelecionada = this.BuscaContaSelecionada();

            this.MostraConta(contaSelecionada);
        }

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

        private void MostraConta(Conta contaSelecionada) //único erro
        {//erro:"O tipo 'Titular' já contém uma definicao para 'MostraConta'"

            txtTitular.Text = Convert.ToString(contaSelecionada.Titular.Nome);
            txtNumero.Text = Convert.ToString(contaSelecionada.Numero);
            txtSaldo.Text = Convert.ToString(contaSelecionada.Saldo);
        }
        private void btnSaca_Click(object sender, EventArgs e)
        {
            string txtValorSaque = txtValor.Text;
            Conta contaSelecionada = this.BuscaContaSelecionada();

            contaSelecionada.Saca(Convert.ToDouble(txtValor.Text));
            this.MostraConta(contaSelecionada);

        }

        private void btnDeposita_Click(object sender, EventArgs e)
        {
            string txtValorDoDeposito = txtValor.Text;
            //double valorDeposito = Convert.ToDouble(txtValorDoDeposito);

            Conta contaSelecionada = this.BuscaContaSelecionada();
            contaSelecionada.Deposita(Convert.ToDouble(txtValor.Text));
            this.MostraConta(contaSelecionada);

        }
    }
}

Um dos problemas que verifiquei é que você definiu o nome do formulário como Titular e isso está entrando em conflito com a classe titular, modifique a propriedade Name do seu formulário para formTitular que deve resolver

        private void MostraConta(Conta contaSelecionada) //único erro
        {//erro:"O tipo 'Titular' já contém uma definicao para 'MostraConta'"
            //txtTitular.Text = Convert.ToString(contaSelecionada.Titular.Nome);            
            //-- Nome do titular já é string
            txtTitular.Text = contaSelecionada.Titular.Nome;
            txtNumero.Text = Convert.ToString(contaSelecionada.Numero);
            txtSaldo.Text = Convert.ToString(contaSelecionada.Saldo);
        }