これを行うことに違いはありますか:
Public Class Class1
Protected Test1 As String
Public Sub New(ByVal test2 As String)
Test1 = test2
End Sub
End Class
Public Class Class2
Inherits Class1
Public Sub New()
MyBase.New("called from class 2")
End Sub
End Class
この:
Public Class Class1
Protected Test1 As String
End Class
Public Class Class2
Inherits Class1
Public Sub New()
Test1 = "Called from class 2"
End Sub
End Class
最初の例では、スーパークラスのインスタンス変数がコンストラクターで初期化されます。2 番目の例では、スーパークラスのインスタンス変数がサブクラスで初期化されます。
私が尋ねる理由は、サブクラスからこれをやろうとしているからです:
Public Sub New()
MyBase.New( System.Configuration.ConfigurationManager.AppSettings.Item("PurgeFile" & Me.GetType.Name), & _
System.Configuration.ConfigurationManager.AppSettings.Item("PurgeHeader" & Me.GetType.Name) )
End Sub
「別のコンストラクターを呼び出す場合、構築中のオブジェクトへの参照は無効です」というエラーが表示されます。