提问人:freeflow 提问时间:11/15/2023 更新时间:11/16/2023 访问量:35
寻求用于检测方法参数的测试是一个文本数组
Seeking a test for detecting a parameter to a method is a literal array
问:
我需要确定传递给方法的数组是变量还是文字数组
- 按变量传递
Dim myA as Variant
myA = array(1,2,3,4,5)
myMethod myA
诗句 2. 通过文字数组传递
myMethod Array(1,2,3,4,5)
我已经查看了两种类型的参数的变体 VT 类型和 safearray 结构的 ffeatures 标志,在这两种情况下,我都得到了 &H 0880 的 VT 和 &H200C 的 ffeatures 。这意味着目前我无法区分 MyA 和 Array(1,2,3,4,5)。
问这个问题的原因是我正在尝试创建一个持久化对 Array 的引用的类。使用 myA,这没有问题,因为数组独立于类而存在。但是,对于 Array(1,2,3,4,5),数组是瞬态的,一旦方法返回,它就不再存在,因此在这种情况下,我需要复制数组。
我希望能提供关于我下一步应该去哪里的指示。
答:
0赞
freeflow
11/16/2023
#1
我还没有通过测试输入变量找到解决方案。
但是,我发现如果我对输入数组应用了 safearray 锁,那么在文字数组的情况下,它在退出方法后不会被销毁。
此操作确实意味着在我删除锁之前无法调整非文字外部数组的大小,但我认为这是一个可以接受的权衡。
评论
IsArray