В чем разница между этими двумя способами объявления массива?
В чем разница между:
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];
Обратитесь к официальной документации: