Vbscript 数组可以有不同数据类型的值吗

Vbscript 数组可以有不同数据类型的值吗,vbscript,Vbscript,通常,数组不会有不同数据类型的值,但当使用Items方法从dictionary对象提取数据时。它处理不同数据类型的数据 有谁能澄清一下,数组是否可能有不同数据类型的值 Option Explicit Dim D, i, Arr Set D = CreateObject("Scripting.Dictionary") D.CompareMode = VbTextCompare D.Add "1", 56 D.Add "2", 78 D.Add "3", "John" D.Add "

通常,数组不会有不同数据类型的值,但当使用Items方法从dictionary对象提取数据时。它处理不同数据类型的数据

有谁能澄清一下,数组是否可能有不同数据类型的值

Option Explicit

Dim D, i, Arr

Set D = CreateObject("Scripting.Dictionary")

D.CompareMode = VbTextCompare

D.Add "1", 56

D.Add "2", 78

 D.Add "3", "John"

D.Add "4", 100

Arr = D.Items

For i=0 to ubound(Arr) Step+1

Msgbox Arr(i)

Next

VBScript的类型非常弱。所有变量都是变量(不同的子类型:整数、字符串、对象等)。集合可以保存所有子类型的项;这些项目甚至可以是不同的子类型

即使是字典的键也不一定是字符串;它们也可以是对象。请注意,我必须补充:数组可以是项,但不能是字典的键:

>> Set d = CreateObject("Scripting.Dictionary")
>> d.Add "Company", Array("microsoft", "apple")
>> WScript.Echo Join(d("Company"))
>> a = d("Company") <== array assignment in VBScript COPIES!
>> a(1) = "samsung"
>> WScript.Echo Join(a)
>> WScript.Echo Join(d("Company"))
>>
microsoft apple
microsoft samsung
microsoft apple
>> d.Add a, "won't work"
>>
Error Number:       5
Error Description:  Invalid procedure call or argument
输出:

cscript doa.vbs
0 fixed dyn
1 fixed dyn
2 FIXED DYN
3 fixed dyn
** fixed array
** dyn array
4 fixed dyn
** DYN array
5 DYN array
E:\trials\SoTrials\answers\15008949\vbs\doa.vbs(23, 3) Microsoft VBScript runtime error: This array is fixed or temporarily locked

**fixed array
行证明传递给
grow
的数组不再固定;它与不能增长的
Af
类型不同。

VBScript的类型非常弱。所有变量都是变量(不同的子类型:整数、字符串、对象等)。集合可以保存所有子类型的项;这些项目甚至可以是不同的子类型

即使是字典的键也不一定是字符串;它们也可以是对象。请注意,我必须补充:数组可以是项,但不能是字典的键:

>> Set d = CreateObject("Scripting.Dictionary")
>> d.Add "Company", Array("microsoft", "apple")
>> WScript.Echo Join(d("Company"))
>> a = d("Company") <== array assignment in VBScript COPIES!
>> a(1) = "samsung"
>> WScript.Echo Join(a)
>> WScript.Echo Join(d("Company"))
>>
microsoft apple
microsoft samsung
microsoft apple
>> d.Add a, "won't work"
>>
Error Number:       5
Error Description:  Invalid procedure call or argument
输出:

cscript doa.vbs
0 fixed dyn
1 fixed dyn
2 FIXED DYN
3 fixed dyn
** fixed array
** dyn array
4 fixed dyn
** DYN array
5 DYN array
E:\trials\SoTrials\answers\15008949\vbs\doa.vbs(23, 3) Microsoft VBScript runtime error: This array is fixed or temporarily locked

**fixed array
行证明传递给
grow
的数组不再固定;它与不能增长的
Af
类型不同。

在字典或数组列表中添加固定数组就可以了。为什么不可以呢?在字典或数组列表中添加一个固定数组就可以了。为什么它不起作用?