GetUpperBound()在C#中的基本原理是什么?

时间:2018-02-09 08:06:03

标签: c# arrays multidimensional-array count

我正在学习C#,而且来自Java + Python + D背景。我习惯于通过以下代码(在Java中)将数组从零迭代到其上限:

for(int i = 0; i < array.length; i++)

但是C#,对于多维数组,我无法获得单个维度的长度 - 。多维数组上的.Length获取可用元素的总数。锯齿状阵列可能是一个例外,但它们并不是我正在使用的。为了得到一个特定的维度,我必须使用.GetUpperBound(...),它返回数组的长度减一。

在我得出任何结论之前,是否有理由这样做,并且反对C风格编程语言的趋势可以追溯到至少1972年?有没有一种简单的方法可以获得除.GetUpperBound(...) - 1之外的其他值?对我来说感觉非常混乱。

谢谢!

1 个答案:

答案 0 :(得分:1)

  

对于多维数组,我无法获得单个维度的长度 - 。多维数组上的.Length获取可用元素的总数

这是有道理的,因为多维数组实际上只是一块连续的内存块。将Length作为数组的实际总长度返回似乎是有意义的。

如果您想知道该数组的实际尺寸,或者知道数组是否从GetUpperBound开始而不是GetLowerBound,那么

10会很方便。在这种情况下,迭代项目0..Length-1并没有削减它。