いくつかのVBAコードをVB.Netに変換しようとしていて、いくつかのクラスの問題でハングアップしています。私はメインクラスclsComputerを持っています。サブクラスclsHardDriveがあります。コンピュータは、1つの以上のハードドライブを持つことができるので、それはGet
とSet
プロパティがclsComputerで次のようになります:VB.Net - クラスのサブクラスを使用
Private pHardDrive(8) As clsHardDrive
Public Property Get HardDrive(index As Integer) As clsHardDrive
If pHardDrive(index) Is Nothing Then Set pHardDrive(index) = New clsHardDrive
Set HardDrive = pHardDrive(index)
End Property
Public Property Set HardDrive(index As Integer, value As clsHardDrive)
pHardDrive(index) = value
End Property
これは私のコードではこのような何かを行うことができます:
objComp.HardDrive(0).Size = "500"
objComp.HardDrive(1).Size = "1000"
しかし、私は、これをVB.Netに変換する方法がわかりません。
Property HardDrive As HDD
Get (ByVal index As Integer)
Return pHardDrive(index)
End Get
Set (ByVal index As Integer, value As HDD)
pHardDrive(index) = value
End Set
End Property
しかし、それはコンパイルエラーを与える:私はこれを試してみましたそのエラーの検索
Property without a 'ReadOnly' or 'WriteOnly' specifier must provide both a 'Get' and a 'Set'. (BC30124)
は非常に有用ではありません:To correct this error make sure you include both a Get procedure and a Set procedure between the Property statement and the End Property statement.
私は両方の取得と設定している、と私は、彼らが正しく終端されていると思います。私はまた別のクラスの中であるクラスを使うことについての例を探しましたが、役に立たないものは何も見つかりませんでした。
私はVBAで持っているVB.Netと同じ機能をどのようにして得ますか?例えば、1つのコンピュータオブジェクトが多くのハードドライブオブジェクトを持つことができるように、HardDriveのインスタンスを作成するにはどうすればよいですか?
は、ここでは一例https://msdn.microsoft.com/en-us/library/e8ae41a4.aspx –
Dohのを見てください!そのページの#2: 'プロパティがパラメータをとる場合は、プロシージャの名前を指定したPropertyキーワードの後にカッコで囲まれたパラメータリストをたどってください.'したがって、 'Property HardDrive(Byval Index As Integer)As HDD'とコンパイル!これを回答として投稿してください。 :) – Tim
Reckon Codyが努力してそれに値する。 –