如何验证属性中的值?

时间:2014-01-29 09:00:07

标签: c# oop validation properties

我有一个问题。如何验证我的物业价格是正数,否则抛出新的例外。

我已经尝试过这种方式,但仍然无效:

public decimal Price
{
    get
    {
        { return this.price; }
    }
    set
    {
        if (this.price < 0)
        {
            throw new ArgumentException("The price should be positive!");
        }
        else
        {
            this.price = value;
        }

    }
}

2 个答案:

答案 0 :(得分:4)

现在我看到,您正在检查属性的setter中的后备字段,该字段具有最后一个值或默认值0(如果尚未初始化)。改为使用value

private decimal price;
public decimal Price
{
    get
    {
        { return this.price; }
    }
    set
    {
        if (value < 0)
        {
            throw new ArgumentException("The price should be positive!");
        }
        else
        {
            this.price = value;
        }
    }
}

答案 1 :(得分:2)

部分this.price是当前值。您需要使用value变量检查设置器中传递的值。

public decimal Price
{
    get 
    {
        { return this.price; }
    }
    set 
    {
        if (value < 0)
        {
            throw new ArgumentException("The price should be positive!");
        }
        else
        {
            this.price = value;
        }

    }
}