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

Codigo com erro cs0029

o codigo emite a mensagem "Não e possível converter implicitamente tipo "string" em "caixaEletronico.Cliente",

o codigo fica com uma tarja de erro quando aparece:

this.conta.Titular = "nome";

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace imposto
{
    class Cliente
    {
        public String nome { get; set; }
        public String cpf;
        public String rg;
        public String endereco;
        public int idade;

        public bool validarIdade()
        {
            return this.idade >= 18;
        }
    }

    }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CaixaEletronico
{
    class Conta
    {
        public int Numero { get; set; }
        public Cliente Titular { get; set; }
        public double Saldo { get; private set; }

        public void Depositar(double valorDeposito)
        {
            if(valorDeposito > 0) { 
            this.Saldo += valorDeposito;
            }
        }

        public bool Sacar(double valorSacar)
        {

            if (valorSacar < 0 || valorSacar > this.Saldo)
            {
                return false;
            }
            else
            {
                if (valorSacar <= 200)
                {
                    this.Saldo -= valorSacar;
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        public void Transferir(double valor, Conta destino)
        {
            this.Sacar(valor);
            destino.Depositar(valor);
        }

        public double CalculaRendimentoAnual()
        {
            double saldoMes = this.Saldo;

            for (int i = 1; i <= 12; i++)
            {
                saldoMes = this.Saldo * 1.007;
            }
            double rendimento = saldoMes - this.Saldo;

            return rendimento;
        }
    }
}
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 CaixaEletronico
{
    public partial class Form1 : Form
    {
        Conta conta;

        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void label4_Click(object sender, EventArgs e)
        {

        }

        private void textBox4_TextChanged(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.conta = new Conta();
            this.conta.Titular = "wyllian";
            this.conta.Numero = 1;
            this.conta.Depositar(250.0);

            this.MostrarConta();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string textoDoSaque = textoValor.Text;
            double valorSaque = Convert.ToDouble(textoDoSaque);
            this.conta.Sacar(valorSaque);

            this.MostrarConta();

        }

        private void button2_Click(object sender, EventArgs e)
        {
            string textoDoDeposito = textoValor.Text;
            double valorDeposito = Convert.ToDouble(textoDoDeposito);
            this.conta.Depositar(valorDeposito);

            this.MostrarConta();

        }

        private void MostrarConta()
        {
            textoTitular.Text = conta.Titular.Nome;
            textSaldo.Text = Convert.ToString(conta.Saldo);
            textNumero.Text = Convert.ToString(conta.Numero);
        }
    }
}

já pesquisei mas ainda não conseguir detectar como concerta o erro ???

3 respostas

Tem que mudar para:

this.conta.Titular.Nome = "nome";

Pois voce esta tentando passar uma string para um objeto do tipo Cliente

solução!

Oi Wyllian, tudo bom?

Isso acontece porque agora nossa Conta está utilizando um Cliente como tipo do titular:

        public Cliente Titular { get; set; }

E aqui, estamos tentando adicionar uma string nessa property:

this.conta.Titular = "nome";

E o c# não consegue converter a string "nome" em uma instancia de Cliente.

O correto seria criar uma instancia de cliente, dar o nome para o cliente novo e depois dizer que esse cliente é o titular da conta. Algo como:

Cliente novoCliente = new Cliente(); // cria o cliente novo
novoCliente.Nome = "nome"; // da o nome pro cliente
this.conta.Titular = novoCliente; // relacionamos os dois =)

Abraço e bons estudos!

André Chaves, Obrigado pela dica. Depois desta Explicação ficou claro para mim!

Neste caso o o tipo Cliente.Titular, só pode receber atribuição de uma instancia de um objeto. neste caso! correto ?