2017-08-28 7 views
0

私は知らないのですが、パラメータを渡した後に再計算された基本クラスのプロパティを取得する必要があります。ここでは例のコードは次のとおりです。vb.netいくつかのパラメータを渡した後、派生クラスから基底クラスを再初期化する方法

Public Class BaseClass 
    Public Property Initial As Integer 
    Public Property Coeficient As Integer 
    Public Property Multiplier As Integer = Coeficient * Initial 

    Public Sub New() 
     Me.New(0, 1) ' default initialization 
    End Sub 

    Public Sub New(ByVal Value1 As Integer, ByVal Value2 As Integer) 
     Me.Initial = Value1 
     Me.Coeficient = Value2 
    End Sub 

End Class 

Public Class DerivedClass 
    Inherits BaseClass 

    Public Sub New() 
     MyBase.New() 
    End Sub 

    Public Sub New(ByVal Value As Integer) 
     MyBase.New(Value, 3) 'sets the coeficient to 3 and the Initial whatever is passed to it 
    End Sub 

End Class 

Public Class TestClas 

    Public Sub TestDerivedClass() 

     Dim d As New DerivedClass(5) 
     Dim result As Integer = d.Multiplier 

     MsgBox(result) ' should be 15, but is not, because Multiplier need to be re-initialized somehow 

    End Sub 

End Class 

私は、問題がどこにあるかを理解し、しかし、私は必要なのは、それに異なるパラメータを通過した後、複数の派生クラスでは異なる継承されるダイナミックな基底クラスのようなものを得ることです。

ありがとうございます。

+0

を期待しているあなたの「自動動作」を提供します。他の2つのプロパティを更新すると同時に値を更新します。 – Plutonix

+0

しかし、私は例を挙げているだけではありません。同じ時間に多くの他のプロパティを更新する必要があります。遭遇したあらゆる状況に合わせてさまざまな形でクラスを書き直すように聞こえます。 –

答えて

0

乗算器はプロパティなので、クラスのフィールドです。初期化すると、値が与えられます。

"機能の動作"が必要です。

多くのことができますが、私はあなたが本当に必要なものを知りません。整数

  • としてまたはReadOnlyプロパティ
  • に機能するために、プロパティから

    • または取得および設定エリア書き込み:乗算器を変更してください。

    簡単な例:

    Public ReadOnly Property Multiplier As Integer 
        Get 
        Return Coeficient * Initial 
        End Get 
    End Property 
    

    これはあなただけで値 `Multiplier`に式を割り当てる習慣

  • +0

    ありがとうございました。 ! –

    +0

    小説、フィールド、プロパティは同じものではありません。問題は「乗算器」はフィールドではない(バイナリ互換性の観点からは重要なプロパティではない)、現時点ではフィールドのように実装されているということです。 – Craig

    2

    Multiplierプロパティの値が更新されません。他の2つの値の乗算を常に返すようにするには、製品を返す読み取り専用プロパティに変換する必要があります。

    Public Property Multiplier As Integer = Coeficient * Initial 
    

    Public ReadOnly Property Multiplier() As Integer 
        Get 
         Return Coeficient * Initial 
        End Get 
    End Property 
    

    役立ちます希望を

    は、次の行を置き換えます。

    +0

    残念ながら、@ Cavemanはあなたより速いです。 : –

    +0

    私たちは皆助けてくれてありがとうございました。しかし、彼は実際には速くはありませんでした。)嬉しいことに、あなたの問題は解決しました。 –

    +0

    np、助けに感謝します:) –

    関連する問題