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

本文关键字:属性 设置 | 更新日期: 2023-09-27 18:24:41

我正在做作业,遇到了一个需要设置的属性,该属性不会收到负值。

我有这个属性的代码。如何设置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);

    }

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

您可能应该抛出ArgumentOutOfRangeException:

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

但是,根据具体要求,默认为0或什么都不做也可以是一种选择。

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

如果值小于0,则不执行任何操作,或者抛出ArgumentException

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