尝试将一些VBA代码转换为VB.Net并在某些类问题上挂起。我有一个主要类:clsComputer。它有一个子类:clsHardDrive。由于计算机可以拥有1个以上的硬盘驱动器,因此clsComputer中的-ffast-math
和Get
属性如下所示:
Set
这允许我在代码中执行类似的操作:
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
但是,我不知道如何将其转换为VB.Net。我试过这个:
objComp.HardDrive(0).Size = "500"
objComp.HardDrive(1).Size = "1000"
但它给出了编译错误: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)
我同时拥有Get和Set,我认为它们已被正确终止。我也搜索过在另一个类中使用一个类的例子,但是我找不到任何有用的东西。
如何在VB中获得与VBA相同的功能? EG,如何创建HardDrive实例,以便一个计算机对象可以拥有多个硬盘对象?
答案 0 :(得分:2)
VB.NET中的索引属性still exist,就像经典的基于COM的VB一样。
你的语法错误。索引属性实际上只是参数化属性的一个特例,因此index
被视为整个属性的参数,而不是单个Get
和Set
语句。
Public Class Computer
Private m_hardDrives(8) As HDD
Public Property HardDrive(ByVal index As Integer) As HDD
Get
Return m_hardDrives(index)
End Get
Set(ByVal value As HDD)
m_hardDrives(index) = value
End Set
End Property
End Class