我正在学习C#,而且来自Java + Python + D背景。我习惯于通过以下代码(在Java中)将数组从零迭代到其上限:
for(int i = 0; i < array.length; i++)
但是C#,对于多维数组,我无法获得单个维度的长度 - 。多维数组上的.Length获取可用元素的总数。锯齿状阵列可能是一个例外,但它们并不是我正在使用的。为了得到一个特定的维度,我必须使用.GetUpperBound(...),它返回数组的长度减一。
在我得出任何结论之前,是否有理由这样做,并且反对C风格编程语言的趋势可以追溯到至少1972年?有没有一种简单的方法可以获得除.GetUpperBound(...) - 1之外的其他值?对我来说感觉非常混乱。
谢谢!
答案 0 :(得分:1)
对于多维数组,我无法获得单个维度的长度 - 。多维数组上的.Length获取可用元素的总数
这是有道理的,因为多维数组实际上只是一块连续的内存块。将Length
作为数组的实际总长度返回似乎是有意义的。
GetUpperBound
开始而不是GetLowerBound
,那么 1
和0
会很方便。在这种情况下,迭代项目0..Length-1
并没有削减它。