2014-09-22 49 views
-1

之前C#數據驗證所以,我的挑戰就是:設定值

構造函數應該調用基類的構造函數初始化該帳戶的名稱,數量,和平衡。它還應該在它自己的類setInterestRate中調用一個方法,該方法應該設置InterestRate變量並驗證該比率是一個正數。如果通過的利率爲負數,則將利率設置爲零。

這對我來說看起來相當簡單,但是VS正在爲我的setInteresteRate方法(不是所有的代碼路徑都返回一個值)對我進行ping操作。我一定錯過了一些東西,但我不確定是什麼。有什麼建議麼?這裏是我的代碼:

public SavingsAccount(string AccountName, int AccountNumber, decimal Balance, double rate) : base(AccountName, AccountNumber, Balance) 
    { 
     InterestRate = rate; 
    } 

    public double setInterestRate(double rate) 
    { 
     if (rate >= 0) 
     { 
      InterestRate = rate; 
     } 
     else 
     { 
      InterestRate = 0; 
     } 
    } 
+0

也許不是最好的重複...如果你不喜歡這樣一個隨意檢查MSDN [CS0161](http://msdn.microsoft.com/en-us/library/87cz4k9t%28v=vs.90%29.aspx)或搜索SO - http://stackoverflow.com/search?q= [c%23] not + all + code + paths + return + a + value並添加更多信息,因此很清楚爲什麼你的不同。 – 2014-09-22 01:08:47

+0

阿列克謝,謝謝你的鏈接!我也檢查了這一點,併爲未來的挑戰添加書籤。 – user3533863 2014-09-22 01:46:07

回答

1

使你的setInterestRate方法void如下。因爲你只需要設置InterestRate。

public void setInterestRate(double rate) 

如果您的方法中有返回類型,則必須返回一個值。那是你的錯誤顯示。

建議

讓您的InterestRate的財產像下面樣品並做驗證有

double interestRate; 
    public double InterestRate 
    { 
     get 
     { 
      return interestRate; 
     } 
     set 
     { 
      if (value >= 0) 
      { 
       interestRate = value; 
      } 
      else 
      { 
       interestRate = 0; 
      } 
     } 
    } 
+0

對於建議部分+1(找到好的重複可能會更好 - OP不是第一個打CS0161錯誤的人)。請注意,您可能會考慮在負數上拋出異常 - 通常最好是失敗,而不是使用「隨機」值而不是輸入。 – 2014-09-22 01:15:33

+0

謝謝大家的信息,這似乎解決了這個問題。我將在未來嘗試從MSDN中找到重複項。再次感謝! – user3533863 2014-09-22 01:43:50