В чем разница между этими двумя способами объявления массива?

В чем разница между:

int [][] myArray;

и

int [,] myOtherArray;

Ответы

Ответ 1

Первый - это массив с зазубринами: массив, в котором каждый элемент в массиве - это другой массив

int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

Второй - многомерный массив, также известный как матрица.

int[,] array = new int[4, 2]; // create a 4 by 2 matrix

Ответ 2

myArray представляет собой jagged array или массив массивов. Каждый элемент myArray сам является int[].

myOtherArray представляет собой прямоугольный (или многомерный) массив - единственный объект, содержащий все данные напрямую.

То, что вы должны использовать, действительно зависит от ситуации. Иногда бывает удобно иметь массив для каждой "строки" данных (с возможностью замены целых строк и иметь строки с разной длиной), тогда как в других случаях имеет смысл принудительно создать единый макет.

Ответ 3

Я нашел лучший способ понять, что это было графическое представление этого =)

int[][] jagged = new int[3][];
jagged[0] = new int[1];
jagged[1] = new int[2];
jagged[2] = new int[4];

будет выглядеть следующим образом

[0] - [0]
[1] - [0][1]
[2] - [0][1][2][3]

в то время как двухмерная

int[,] twodimensional = new int[3,4]

будет выглядеть следующим образом

[0,0][0,1][0,2][0,3]
[1,0][1,1][1,2][1,3]
[2,0][2,1][2,2][2,3]

Ответ 4

Первый - это зубчатый массив, другой многомерный - разница в том, что элементы массива с зубчатым контуром могут иметь разные размеры и размеры.

Ответ 5

Измененный массив:

int [][] myArray;

Прямоугольный массив:

int [,] myOtherArray;

Цитировать Сравнение Rectangular и Jagged Arrays:

Структура прямоугольных и зубчатые массивы значительно другой.

Одномерные массивы имеют конкретные инструкции в CIL, которые позволяют их оптимизировать для повышения производительности. Прямоугольные массивы не имеют этих инструкции и не оптимизированы для на том же уровне. Из-за этого иногда могут быть более эффективными в использовании зубчатые массивы одномерных массивы, которые можно оптимизировать, чем прямоугольные массивы, которые не могут. На с другой стороны, программирование сложность может быть меньше для прямоугольная матрица, поскольку она может быть рассматривается как единое целое, а не массив массивов.

Ответ 6

Это должно быть дубликат. Один из них - зубчатый массив, один - двумерный массив. Вы должны быть в состоянии взять это оттуда.

Ответ 7

Оба оператора объявляют неинициализированные многомерные массивы int. Первый - это зубчатый массив, а второй - двумерный.

Вы можете инициализировать 2-мерный массив одновременно с объявлением его следующим образом:

int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

ИЛИ

int[,] array = new int[4, 2];

Обратитесь к официальной документации: