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

Erro ao atribuir valor em uma propriedade readonly mesmo no construtor da classe. Estou usando o VS 2013

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

namespace ByteBank { public class ContaCorrente { public static double TaxaOperacao { get; private set; }

    public static int TotalDeContasCriadas { get; private set; }

    public Cliente Titular { get; set; }
insira seu código aqui

public int Numero {get;} public int Agencia {get;}

    private double _saldo = 100;
    public double Saldo
    {
        get
        {
            return _saldo;
        }
        set
        {
            if (value < 0)
            {
                return;
            }

            _saldo = value;
        }
    }

    public ContaCorrente(int agencia, int numero)
    {
        Agencia = agencia;
        Numero = numero;

        TaxaOperacao = 30 / TotalDeContasCriadas;

        TotalDeContasCriadas++;
    }

    public bool Sacar(double valor)
    {
        if (_saldo < valor)
        {
            return false;
        }

        _saldo -= valor;
        return true;
    }

    public void Depositar(double valor)
    {
        _saldo += valor;
    }

    public bool Transferir(double valor, ContaCorrente contaDestino)
    {
        if (_saldo < valor)
        {
            return false;
        }

        _saldo -= valor;
        contaDestino.Depositar(valor);
        return true;
    }
}

}

5 respostas

Dá erro porque você tenta atribuir um valor aqui nesta linha> Numero = numero;

Exato. Mas não era pra dar erro. Na aula é explicado e mostrado que a propriedade Readonly só pode receber atribuição dentro do construtor da classe. Estou seguindo a aula, até peguei o código disponibilizado no curso pra testar e continua dando o problema. A única diferença é que estou usando o Visual Studio 2013 e o curso está usando o 2017. Até tenho o 2017 instalado mas não consigo fazer o login com a conta da microsoft e como já tem mais de 30 dias instalado não consigo entrar no vs sem fazer o login. Quando abre o vs pede o login, eu coloco e-mail e senha e fica eternamente tentando logar e não loga. O problema não é com a conta, fiz login com essa conta em outra máquina e tudo OK, mas na minha não faz de jeito nenhum. Criei até uma conta nova, e nada.

Fechei o vs e abri o projeto de novo e funcionou sem erros e do nada voltou a dar erro Vai entender!

Escrevendo o código da forma mais convencional, como no código abaixo, funciona.Quando tento fazer da forma indicada na aula, dá o erro na atribuição do valor mesmo no construtor Pode ser algum problema na meu visual studio? Como disse anteriormente, estou usando o vs 2013

        private readonly int _numero;
        private readonly int _agencia;

        public int Numero
        {
            get
            {
                return _numero;
            }
        }
        public int Agencia
        {
            get
            {
                return _agencia;
            }
        }

        public ContaCorrente(int agencia, int numero)
        {
            _agencia = agencia;
            _numero = numero;

            TaxaOperacao = 30 / TotalDeContasCriadas;


            TotalDeContasCriadas++;
        }
solução!

Oi, Carlos. Tudo bom?

O código abaixo:

class Classe
{
    public int Numero { get; }
    public Classe()
    {
        Numero = 1;
    }
}

Usa um recurso chamado "propriedade automática", quando temos uma propriedade com Getter, sem setter e atribuição no construtor (ou na própria declaração). Este recurso nasceu no C# 6 e esta versão da linguagem não é suportada pelo Visual Studio 2013.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software