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

C# C中GetUpperBound()的基本原理是什么?,c#,arrays,multidimensional-array,count,C#,Arrays,Multidimensional Array,Count,我在Java+Python+D的背景下学习C和am。我习惯于通过Java中的以下代码对数组进行从零到上限的迭代: for(int i = 0; i < array.length; i++) 但是对于多维数组,我不能得到单个维度的长度-,多维数组的长度得到可用元素的总数。锯齿状数组可能是个例外,但它们不是我正在使用的。要获得特定维度,我必须使用.GetUpperBound,返回数组的长度减去1 在我得出任何结论之前,它这样做是否有理由,并且至少可以追溯到1972年的C风格编程语言的发展趋势

我在Java+Python+D的背景下学习C和am。我习惯于通过Java中的以下代码对数组进行从零到上限的迭代:

for(int i = 0; i < array.length; i++)
但是对于多维数组,我不能得到单个维度的长度-,多维数组的长度得到可用元素的总数。锯齿状数组可能是个例外,但它们不是我正在使用的。要获得特定维度,我必须使用.GetUpperBound,返回数组的长度减去1

在我得出任何结论之前,它这样做是否有理由,并且至少可以追溯到1972年的C风格编程语言的发展趋势?除了.GetUpperBound…-1.我觉得很乱

谢谢大家!

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

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


例如,如果您想知道该数组的实际维度,或者知道数组是否从1开始而不是从0开始,那么GetUpperBound和GetLowerBound非常方便。在这种情况下,迭代项0..Length-1并不能解决这个问题。

您有没有类似的Java多维数组访问示例?我可以看到一些重叠,但这并不能解决我问题的全部范围-是否可以快速获得维度的长度?我不确定我是否理解这个问题,但这有帮助吗@Damien_,不信的人,或多或少是一样的;在Java中,所有数组都可能是交错数组。因此,第一个维度类似于array.length,数组[0]。第二个维度类似于length,数组[0][0]。第三个维度类似于length,等等@DragandDrop这看起来像我要找的,谢谢!你能把它写下来作为回答而不是评论,这样我就可以接受了吗?