2
respostas

Construtores

Olá pessoal, Uma dúvida com relação da ClasseCorrente, após acompanhar o vídeo do professor, fui alterar o atributo public int Agencia { get; set; } para expandir o get e set, na página da explicação temos o public int Agencia da seguinte forma:

public int Agencia;
{
    get
    {
        return _agencia;
    }
    set
    {
        if(value <= 0)
        {
            return;
        }

        _agencia = value;
    }
}

Mas ao finalizar, deu erro em public int Agencia; que esta no texto com ponto e virgula com mensagens nas variáveis e no get e set como _agencia is a field but is used like a type, eu removi o ponto e virgula do public int Agencia e funcionou, seria necessário deixar o ponto e virgula ou devo mesmo tira-lo? Não sei se esqueci de fazer outra no código ou se esta lá no texto da explicação por engano, fico no aguardo desta dúvida.

2 respostas

No exemplo citado, devemos instanciar a propriedade se quisermos estabelecer que não é permitido atribuir valores negativos aos campos, basta declarar o atributo como privado private int _agencia; e um atributo public que terá a responsabilidade pela validação:

public int Agencia
 {
      get { return _agencia; }
      set { _agencia = value; }
 }

No seu exemplo você está colocando ponto e vírgula onde não se deve, no caso na declaração de um atributo. Por isso não compila com o ponto e vírgula, somente sem.

Declaração completa

    class ClasseCorrente
    {
        private int _agencia;

        public int Agencia
        {
            get { return _agencia; }
            set { _agencia = value; }
        }
    }

A transcrição do vídeo está errada, usamos o ponto e vírgula para indicar um fim de instrução, neste caso o atributo Agencia ficou público e dali pra baixo o código ficou errado, o Visual Studio por não entender o resto de código o sinalizou com a cor vermelha e indicou o que fazer, a indicação nem sempre é a correta, é necessário uma análise do código.

Da forma em que o código está não vai compilar, é necessário remover o ponto e vírgula ao final da linha.