Прямоугольный массив физический в порядке памяти

В Си, в массиве говорятA[2][3] Самое правое изменение индекса привело к наименьшему смещению адреса памяти, то есть элементы были расположены в памяти какA[0][0], A[0][1]...

То же самое верно для прямоугольных массивов в .NET? Если у нас есть, скажем массивa[2, 3] элементы расположены в памяти какa[0, 0], a[0, 1]...?

 Cody Gray♦13 мая 2012 г., 15:40
Нет, это то, как двумерные массивы реализованы в C. Они являются просто одномерным массивом, элементы которого сами являются одномерными массивами.
 Petr Abdulin13 мая 2012 г., 15:36
@ Свик, ты просто неправ.
 Petr Abdulin13 мая 2012 г., 16:11
@CodyGray, кроме формального определения и понятия, они являются прямым аналогом прямоугольных массивов в C #. В то время какint[][] в C # это совершенно другая вещь, и является аналогом*int[] в С.
 svick13 мая 2012 г., 15:34
Вы не точно сравниваете сопоставимые данные. Ваш массив C на самом деле не является двумерным массивом, это массив массивов. Вы можете сделать то же самое в C #, например:int[][]неint[,].

Ответы на вопрос(1)

Решение Вопроса

Спецификация CLI, раздел 8.9.1, заявляет:

Array elements shall be laid out within the array object in row-major order (i.e., the elements associated with the rightmost array dimension shall be laid out contiguously from lowest to highest index). The actual storage allocated for each array element can include platform-specific padding.

Таким образом, ответ - да, вы сначала столкнетесь со всеми элементами первого ряда, затем со всеми элементами второго ряда и т. Д. (Как сказано в спецификации, это называетсяrow-major order).

 Petr Abdulin13 мая 2012 г., 15:38
Спасибо, лень было найти это самому! :)

Ваш ответ на вопрос