2011-11-14 54 views
0

所以..我如何使用构造函数内的属性来验证私有实例变量(字段)?使用属性设置验证在构造函数中设置私有字段

我有此代码的作品,但我有一个强烈的感觉,这是不是它应该是怎样做:

class Account 
    { 
     private decimal acctBalance = 0; 

     public decimal AcctBalance 
     { 
      get 
      { 
       return acctBalance; 
      } 
      set 
      { 
       if (acctBalance >= 0) 
        acctBalance = value; 
       else 
       { 
        Console.WriteLine("Invalid balance, balance set to 0"); 
        acctBalance = 0; 
       } 
      } 
     } 

     public Account(decimal balance) 
     { 
      acctBalance = balance; 
      AcctBalance = acctBalance; 
     } 
    } 

我只是想确保,这是做了正确的方式

谢谢!

回答

3

你的方法大多是正确的,虽然有几个问题。我修正了他们,并在我所做的注释中注释了代码。

class Account 
{ 
    private decimal acctBalance = 0; 

    public decimal AcctBalance 
    { 
     get 
     { 
      return acctBalance; 
     } 
     set 
     { 
      //modified to check value instead of acctBalance 
      if (value >= 0) 
       acctBalance = value; 
      else 
      { 
       Console.WriteLine("Invalid balance, balance set to 0"); 
       acctBalance = 0; 
      } 
     } 
    } 

    public Account(decimal balance) 
    { 
     //redundant! Changing AcctBalance changes acctBalance 
     //acctBalance = balance; 
     AcctBalance = balance; 
    } 
} 
+0

这是一个特别要求我使用的公共属性设置专用场,我只是想知道这是做了正确的方法,或者至少是普遍接受的方式 – bruchowski

+0

在家庭作业那种情况下,我会编辑我的答案。有一刻,好的先生! –

+0

下面是确切的说明:“基类账户应该包含一个私有的实例变量,用于表示账户余额,该类应该提供一个构造函数来接收初始余额并使用它来初始化具有公共属性的实例变量。该属性应该验证初始余额以确保它大于或等于0.0,否则应将余额设置为0.0,并且set访问者应该显示一条错误消息,指出初始余额无效。“ – bruchowski

相关问题