【发布时间】:2020-11-25 09:07:21
【问题描述】:
在 VBScript 的 VarType 函数的 VarType MSDN Microsoft 文档中,它说(加粗强调):
"备注 VarType 函数从不返回 Array 的值 本身。它总是被添加到某个其他值以指示一个数组 特定类型。 Variant 的值仅在具有 已添加到 Array 的值中,以指示 VarType 函数是一个数组。 例如,返回的值 整数数组计算为 2 + 8192 或 8194。如果一个对象有 一个默认属性,VarType(object) 返回其默认的类型 属性。”
但是
代码如
Dim A,I1, I2, I3
I1 = 1
I2 = 2
I3 = 3
A = Array(I1,I2,I3)
Dim A2
A2 = Split("Test,Test,Test",",")
AT = VarType(A)
AT2 = VarType(A2)
IT1 = VarType(I1)
IT2 = VarType(I2)
IT3 = VarType(I3)
WScript.Echo IT1
WScript.Echo IT2
WScript.Echo IT3
WScript.Echo AT & " - 8192 = " & AT - 8192
WScript.Echo AT2 & " - 8192 = " & AT2 - 8192
WScript.Echo CStr(VarType(A(2)))
返回
2
2
2
8204 - 8192 = 12
8204 - 8192 = 12
2
I1 - I3 ALL 返回其正确的 vbInteger 并且,当在其数组中单独引用时,也返回 vbInteger,但该数组坚持认为它是 vbVariant 的数组。
除非我在这里完全遗漏了一些东西,否则似乎在文档中没有办法创建一个数组,其中所有的项目都是相同的类型,并且VarType 将其识别为除了数组之外的任何东西vbVariant.
我觉得这应该已经是一个问题,但是我在这里进行了空搜索,所以如果我错过了现有问题,请随时链接。
【问题讨论】: