English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Jagged arrays are arrays of arrays. Jagged arrays store arrays rather than literal values. For example, a two-dimensional array is a one-dimensional array of the same elements, but a jagged array, the number of elements in each array below is different.
Jagged arrays initializes with two square brackets [][] . The first bracket specifies the size of the array, the second bracket specifies the size of the arrays to be stored.
Ниже приведен пример declarations of jagged arrays.
int[][] jArray1 = new int[2][]; // может содержать до двух одномерных массивов int[][,] jArray2 = new int[3][,]; // может содержать до трех двумерных массивов
В примере выше, jArray1 может хранить до двух одномерных массивов. jArray2 может хранить до трех двумерных массивов, массив [][] определяет двумерный массив.
int[][] jArray = new int[2][]; jArray[0] = new int[3]{1, 2, 3}; jArray[1] = new int[4]{4, 5, 6, 7};
Вы также можете инициализировать структурированный массив при его определении, как показано ниже.
int[][] jArray = new int[2][]{ new int[3]{1, 2, 3}, new int[4]{4, 5, 6, 7} }; jArray[0][0]; //возвращает 1 jArray[0][1]; //возвращает 2 jArray[0][2]; //возвращает 3 jArray[1][0]; //возвращает 4 jArray[1][1]; //возвращает 5 jArray[1][2]; //возвращает 6 jArray[1][3]; //возвращает 7
Для доступа к структурированному массиву можно использовать два цикла for, как показано ниже.
int[][] jArray = new int[2][]{ new int[3]{1, 2, 3}, new int[4]{4, 5, 6, 7} }; for(int i=0; i<jArray.Length; i++) { for(int j=0; j < (jArray[i]).Length; j++) Console.WriteLine(jArray[i][j]); }
Ниже приведен пример структурирования массива, где вторая скобка [ ] указывает на двумерный массив.
int[][,] jArray = new int[2][,]; jArray[0] = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } }; jArray[1] = new int[2, 2] { { 7, 8 }, { 9, 10 } }; jArray[0][1, 1]; //возвращает 4 jArray[1][1, 0]; //возвращает 9 jArray[1][1, 1]; //возвращает 10
Если добавить еще одну скобку, то это будет массив массивов.
int[][][] intJaggedArray = new int[2][][] { new int[2][] { new int[3] { 1, 2, 3}, new int[2] { 4, 5} }, new int[1][] { new int[3] { 7, 8, 9} } }; Console.WriteLine(intJaggedArray[0][0][0]); // 1 Console.WriteLine(intJaggedArray[0][1][1]); // 5 Console.WriteLine(intJaggedArray[1][0][2]); // 9
В примере с перекрестными массивами, три квадратных скобки [] [] [] представляют собой массивы массивов. Таким образом, intJaggedArray будет содержать два элемента, что означает два массива. В каждом массиве также содержится один массив (одномерный). intJaggedArray[0][0][0] указывает на первый элемент первого внутреннего массива. intJaggedArray[1][0][2] указывает на третий элемент второго внутреннего массива. Это показано на следующем рисунке.