2009-08-19 60 views

回答

7

在VB或各种COM派生API中的多维数组上,您可以查询维度的下限。数组类型可以是0或1(即从0或1开始),这也适用于多维数组。

这也适用于通过COM interop暴露的数组。例如,许多Excel API使用基于1的数组,许多API函数使用变体数组作为参数(该变体实质上是作为电子表格单元格的数据类型发明的)。

使用COM互操作时,您仍然必须很好地使用这些API和类型系统。它们最初设计为与VBA一起使用,而“经典”的VB4-6语言变体由于与COM紧密耦合而具有真正的巴洛克式类型系统。 C#等的.Net类型系统。人。比他们的基于COM的前辈稍微痛苦一点,但是在使用COM互操作时仍然会感到痛苦。

+2

你拼写错误破产。 :) – quillbreaker 2009-08-19 17:31:45

+9

您拼写错误'拼写错误';) – Marc 2009-08-19 17:35:20

+6

不,我的意思是“巴洛克式”,如'巴洛克式的怪物',而不是'如果它不是巴洛克式的,不修复它'。 ; - } – ConcernedOfTunbridgeWells 2009-08-19 17:37:23

16

理论上,您可以创建具有任何索引下限或上限的数组。 VB.NET可以使用它来创建一个下限为1的数组,以便与一些较旧的VB版本兼容,但实际上可以使用Array.CreateInstance(Type,Int32[],Int32[])来创建一个具有任意下限的数组。

3

有一个CreateInstance呼叫,其设定非零下界:

CreateInstance(Type, Int32[], Int32[])
创建指定类型和维数长度的多维数组,与指定的下限。

比较这对:

CreateInstance(Type, Int32[])
创建指定类型和维数的长度的多维数组,从零开始的索引。维度长度以32位整数数组指定。

(或任何其他重载,实际上,六个CreateInstance重载,五创建一个从零开始的数组。)