2016-09-27 60 views
0

計算された値を返すために、このプロパティをオーバーライドする必要があります。私はエラーを投げているわけではありませんが、動作していません。私は間違って何をしていますか?どんな助けも素晴らしいだろう。VB.Netはプロパティをオーバーライドします

これは基本クラスにあります。 BalanceValueはプライベート10進数です。

Public Overridable Property Balance() As Decimal 

    Get 
     Return balanceValue 
    End Get 

    Set(balance As Decimal) 
     If balance >= 0D Then 
      balanceValue = balance 
     Else 
      Throw New ArgumentOutOfRangeException("Balance must be greater than or equal to 0") 
     End If 
    End Set 

End Property 

これは派生クラスに含まれています。

Public Overrides Property Balance() As Decimal 
    Get 
     Return CDec(BalanceWithInterest) 
    End Get 

    Set(balance As Decimal) 
     MyBase.Balance = CDec(BalanceWithInterest) 
    End Set 
End Property 

これは、私はそれが

Public Function CalculateInterest(interestRate As Double) As Decimal 

    Return CDec(MyBase.Balance + (MyBase.Balance * interestRate)) 

End Function 
+0

CalculateInterest関数は、意図しない理由でオーバーライドされたプロパティを意図的に使用していません。 MyBase.Balanceの代わりにMe.Balanceを使用します。 –

+0

私はそれをして、それはまだ動作していません。私は何が間違っているのか分かりません。 – LRoyster

+1

あなたはBalanceWithInterestを返しているので、おそらくそれを設定するべきです: 'BalanceWithInterest = balance' – LarsTech

答えて

1

を返すようにしたいものを私はあなたが探しているものは全くわからないんだけど、多分このコードを試してみています。プロパティのパラメータが親クラスとは異なる派生クラスであるため、Overridesキーワードの代わりにShadowsを使用しています。

Public Shadows Property Balance(interestRate As Double) As Decimal 
    Get 
     Return CDec(MyBase.Balance + (MyBase.Balance * interestRate)) 
    End Get 
    Set(balance As Decimal) 
     MyBase.Balance = CDec(balance/(1 + interestRate)) 
    End Set 
    End Property 
関連する問題