array.GetLength(0)和array.GetUpperBound(0)之间的区别

Cor*_*ius 22 c# arrays multidimensional-array

这两种方法有什么区别,你何时使用一种而不是另一种?

int[,] array = new int[4,3];
int length0 = array.GetLength(0);
int upperbound0 = array.GetUpperBound(0);
Run Code Online (Sandbox Code Playgroud)

MSDN说GetLength返回GetUpperBound确定最大索引的元素数量,但是由于数组是用每个索引的元素初始化的,所以这有什么不同呢?

Hen*_*man 37

看看这个(很少使用的)方法.来自Docs:

public static Array CreateInstance(Type elementType, int[] lengths, int[] lowerBounds)

创建具有指定下限的指定类型和尺寸长度的多维数组.

有了它,您可以创建一个索引来自的数组-5 ... +5.如果你曾经使用过这种阵列,那么GetUpperBound()突然变得非常有用GetLength()-1.还有一个GetLowerBound().

但是对于这种阵列的C#支持很低,你无法使用[].您只需要将这些方法与Array.GetValue()和SetValue()方法结合使用.

  • 当我不确定边界时,我只会使用它. (3认同)

Abd*_*man 8

Array.Length 返回需要从中减去1的数组长度(元素数)以获得UpperBound.

Array.GetUpperBound(0) 返回数组的上限,可以按原样使用.