2011-11-14 68 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

相關問題