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?
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?
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!
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.