3


この親クラスがあるとします:

Public MustInherit Class Parent

     ' ReadOnly instance variables:
     Protected ReadOnly str1 As String
     Protected ReadOnly str2 As String
     Protected ReadOnly str3 As String

     ' constructor:
     Public Sub New()
     End Sub
End Class



これらの変数を子クラスのコンストラクターに割り当てたいのですが、次のReadOnlyように、一度割り当てられると変更できないようにしたいです。

Public Class Child
     Inherits Parent

     ' constructor:
     Public Sub New()
          MyBase.New()

          ' can't assign the ReadOnly variables here!
          ' compile error:  'ReadOnly' variable cannot be the target of an assignment
          Me.str1 = "asdf"
          Me.str2 = "qwerty"
          Me.str3 = "foobar"
     End Sub
End Class



これどうやってするの?それが不可能なら、なぜですか?

4

1 に答える 1

2

それらを親コンストラクターに渡します。

Public MustInherit Class Parent

     ' ReadOnly instance variables:
     Protected ReadOnly str1 As String
     Protected ReadOnly str2 As String
     Protected ReadOnly str3 As String

     ' constructor:
     Public Sub New(s1 as String, s2 as String, s3 as String)
        str1 = s1
        str2 = s2
        str3 = s3
     End Sub
End Class

その後、クラスは次のことができます。

Public Class Child
     Inherits Parent

     ' constructor:
     Public Sub New(s1 as String) ' You can pass these through if needed
          MyBase.New(s1, "qwerty", "foobar")
     End Sub
End Class
于 2013-08-22T19:35:57.970 に答える