1
resposta

Não é possível converter implicitamente tipo "string" em "ByteBank.Cliente"

Oi, pessoal. Tenho duas dúvidas:

  1. Após a criação da classe Cliente e substituição na Classe ContaCorrente, a variável que tinha colocado anteriormente para declarar o nome do titular deu o erro do título.

Então, contaDoBruno titular = "Bruno", não compilava mais no Program. Por quê?

using System;

namespace BityBank
{
    class Program
    {
     static void Main(string[] args)
        {
            ContaCorrente contaGabriela = new ContaCorrente();  //instanciando a class ContaCorrente (objeto)

            //contaGabriela.titular = "Gabriela";
            contaGabriela.numeroAgencia = 863;
            contaGabriela.numeroConta = 123456;
            contaGabriela.saldo = 100;

            Console.WriteLine(contaGabriela.titular);

            //Adicionando valor ao saldo
            contaGabriela.saldo += 300;
            Console.WriteLine("Este é o valor da conta Gabriela após adicionar R$ 300 de saldo: R$ " + contaGabriela.saldo);


            //acessando função sacar
            Console.WriteLine("Saldo antes de ser sacado da conta Gabriela " + contaGabriela.saldo);
           bool resultadoSaque =  contaGabriela.Sacar(50); //variável precisa ser do mesmo tipo que a função criada na classe ContaCorrente
            Console.WriteLine("Valor após o saque da conta Gabriela " + resultadoSaque);

            //conta Bruno
            //instanciando nova conta

            ContaCorrente contaBruno = new ContaCorrente();
            contaBruno.titular = "bruno";

            //inserindo valor na conta Bruno

            contaBruno.saldo = 200;
            Console.WriteLine("O saldo da conta do Bruno é de: R$ " + contaBruno.saldo);

            //depositando valor na conta Bruno
            contaBruno.Depositar(50);
            Console.WriteLine("Foi depositado R$ 50. O atual valor é de : R$ " + contaBruno.saldo);

            //transferindo valor da conta Bruno para conta destinatário

            //crio um novo objeto de conta destinario

            ContaCorrente contaDestinatario = new ContaCorrente();

            bool valorTransferencia = contaBruno.Transferir(100, contaDestinatario);
            Console.WriteLine("Foi possível fazer a transferência? " + valorTransferencia);
            Console.WriteLine("Com a transferência, o valor da conta Bruno é de: R$ " + contaBruno.saldo);
            Console.WriteLine("Valor saldo da conta destinatário é de: R$ " + contaDestinatario.saldo);

        }
    }
}
  1. Por que na Classe ContaCorrente é public Cliente titular e não public Cliente nome como atribuída na classe Cliente?

obrigada!

1 resposta

Olá Paula, tudo bem?

Esse erro ocorre porque a propriedade Titular é do tipo Cliente e dentro do tipo Cliente tem uma propriedade Nome que é do tipo string. Para você fazer a atribuição direta do nome deveria ser:

contaBruno.Titular.Nome = "Bruno";

Respondendo a segunda pergunta, na classe ContaCorrente tem a propriedade Titular que aponta (tipo de referência) para um objeto do tipo Cliente e o objeto tem uma propriedade do tipo string (tipo de valor) que comporta o Nome desse cliente.

Sugiro dar uma reforçada na Aula 2 deste curso para reforçar esta parte de tipos de valor e referência, classes com tipos simples e complexos.

Espero ter ajudado!