如何限制属性设置器不接收零以下的值?

时间:2014-09-25 11:31:52

标签: c# oop properties

我正在做作业,而且我被困在一个我不需要接受负面价值的房产。

我有这个属性的代码。如何设置setter不让用户设置负值?

     public decimal Balance 
        { 
        get {return balance;}
        private set{ if (value >= 0) 
        {
            balance = value;
        }else if (value < 0)
        {
           ??????
        }
        }
    }        

这是我的Main()方法:

  static void Main(string[] args)
    {
        BankAccountClass firstAccount = new BankAccountClass();
        int userInputAccountNumber = int.Parse(Console.ReadLine());
        firstAccount.addAccountNumber(userInputAccountNumber);

        Console.WriteLine(firstAccount.AccountNumber);


    }

3 个答案:

答案 0 :(得分:6)

你应该抛出一个ArgumentOutOfRangeException:

 public decimal Balance 
 { 
    get { return balance; }
    private set
    {
       if (value < 0)
          throw new ArgumentOutOfRangeException("Only positive values are allowed");

       balance = value;
    }
}   

但默认为0或无效,也可以是一种选择,具体取决于具体要求。

答案 1 :(得分:1)

public decimal Balance 
{ 
    get {return balance;}
    private set
    { 
        if (value >= 0) 
        {
            balance = value;
        }
    }

如果value小于0,则抛出任何内容,或抛出ArgumentException

答案 2 :(得分:0)

您可以从setter返回(您不需要处理它),或者如果您想处理它,则抛出异常。