假设我定义了一个接口 ITest1 :
Option Explicit
Sub it1Test(cTest As ITest1)
End Sub
然后我构建了一个实现它的类 CTest1 :
Option Explicit
Implements ITest1
Private Sub ITest1_it1Test(cTest As ITest1)
End Sub
Private Sub Test1()
Dim cT1 As CTest1
cT1 = New CTest1
ITest1_it1Test cT1
End Sub
如果我尝试编译此代码,那么一切都将正常运行,这通常是我所期望的。
但是在我这个并不那么简单的世界中,我不想传递单个元素,而是想传递整个数组。
所以我的新界面 ITest2 看起来像这样
Option Explicit
Sub it2Test(cTest() As ITest2)
End Sub
和实现它的类 CTest2 :
Option Explicit
Implements ITest1
Private Sub ITest1_it1Test(cTest() As ITest1)
End Sub
Private Sub Test2()
Dim cT2(1 To 1) As CTest2
cT2(1) = New CTest2
ITest2_it2Test cT2
End Sub
这一次我无法编译错误:
编译错误:
ByRef参数类型不匹配
突出显示了函数ITest2_it2Test的cT2参数作为错误源。
如果函数需要该接口类型的数组,是否可以通过任何方法传递实现该接口的类的数组。换句话说,使用接口作为数组参数的类型有意义吗?
我知道可以将Variant用作数组类型,但是由于使用了接口,它破坏了我所拥有的很多好处。
我找不到与这种特定情况有关的任何东西。我已经检查了有关实现接口的方法的页面数(从MS文档到CPearson页面)。我在堆栈溢出中也找不到任何内容。我已经检查了标记为vba和excel的所有78个问题,并使用了关键字interface和array以及一些建议的问题。