Array.GetLowerBound(int)的目的是什么?

时间:2009-08-19 17:02:39

标签: .net arrays

我不明白Array.GetLowerBound()的目的。

它是否会返回非零值?什么时候?怎么样?

感谢。

3 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:7)

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

这也适用于通过COM互操作公开的数组。例如,许多Excel API使用基于1的数组,许多API函数使用变量数组作为参数(该变体基本上被发明为电子表格单元的数据类型)。

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

答案 2 :(得分:4)

有一个CreateInstance调用设置了非零下限:

  

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

将其与:

进行比较
  

CreateInstance(Type, Int32[])
  创建具有指定类型和维度长度的多维数组,使用从零开始的索引。尺寸长度在32位整数数组中指定。

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