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

Definindo um construtor com parâmetro e colocar uma logica no setter de valor menor ou igual ao value no campo que ira receber o valor do argumento, não impede de construir o objecto passando valor zero no construtor?

Validando o campo no set como if( value <= 0) { return;} e definir como obrigatório no constructor, impede de instanciar um objecto desta classe passando no constructor o valor zero?

3 respostas

Oi, Abel, pra variar a resposta é depende. De quê? Do modo como a implementação da classe foi feita.

Vamos a um código com esse cenário:

public class Produto
{
    public string Nome { get; set; }
    private double _valorUnitario;
    public double ValorUnitario
    {
        get
        {
            return _valorUnitario;
        }
        set
        {
            if (value > 0) _valorUnitario = value;
        }
    }

    public Produto(string nome, double valor)
    {
        Nome = nome;
        _valorUnitario = valor;
    }
}

Repare que apesar de validarmos o valor unitário negativo no setter, ainda conseguimos criar um produto com valor negativo:

Produto p = new Produto("Cadeira", -1.99);
Console.WriteLine(p.ValorUnitario); //vai mostrar -1.99

Porém se no construtor você usar o setter de valor unitário...

    public Produto(string nome, double valor)
    {
        Nome = nome;
        ValorUnitario = valor;
    }

...aí estará seguro de que produto não terá valor negativo!

Faça esse código de teste e me dê um feedback se te ajudou.

Abraços!

solução!

Opa, Abel, bom dia. Sua dúvida foi solucionada? Podemos fechar o tópico?

O codigo funcionou. Verifiquei que o objecto foi criado e o ValorUnitario recebeu o valor padrao (zero) do campo _valorUnitario.