arrays - 当函数/过程需要使用接口类型的数组时,传递使用实现接口的类类型的数组?
问题描述
假设我定义了一个接口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 页面)。我在 Stack Overflow 上也找不到任何东西。我用关键字 interface 和 array 以及一些建议的问题检查了所有 78 个标记为 vba 和 excel 的问题。
解决方案
推荐阅读
- assembly - 函数的序言可以写在它的框架之外吗?
- mysql - mysql查询错误:带有条件的SQL求和
- node.js - Lambda 代理的可怕的畸形响应
- ruby-on-rails - 如何使用 RoR 中的过滤器分类进行查询?
- c++ - 自定义 C++ 2D 游戏引擎:转换精灵屏幕位置相对于相机旋转的问题
- python - 使用 discord.py 时 ffmpeg 失败
- c - 从文本文件中获取字符并将它们存储在字符串中
- c - x 的值是多少,使得 x + 1 == x 和 x * 2 == x 都为真?
- flutter - 如何用flutter_test等待预定的未来?
- java - 录制和播放声音时的回声