12

在 C 中,在数组中说A[2][3]最右边的索引更改导致最小的内存地址偏移,即元素位于内存中A[0][0], A[0][1]...

.NET 中的矩形数组也是如此吗?如果我们有,说数组a[2, 3]是位于内存中的元素a[0, 0], a[0, 1]...吗?

4

1 回答 1

21

CLI 规范第8.9.1 节规定:

数组元素应在数组对象中按行优先顺序排列(即,与最右边数组维度相关的元素应从最低索引到最高索引连续排列)。为每个数组元素分配的实际存储空间可以包括特定于平台的填充。

所以答案是肯定的——你会首先遇到第一行的所有元素,然后是第二行的所有元素,等等(正如规范所说,这称为row-major order)。

于 2012-05-13T13:26:53.263 回答