English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C# поддерживает до 32 измерений многомерных массивов. Многомерные массивы можно声明, добавляя запятые в квадратных скобках. Например, [] объявляет двумерный массив, [,,] объявляет ثلاثмерный массив, [,,,] объявляет четырехмерный массив и т.д. Таким образом, количество запятых = количество измерений - 1.
int[,] arr2d; // двумерный массив int[, ,] arr3d; // трехмерный массив int[, , ,] arr4d ; // четырехмерный массив int[, , , ,] arr5d; // пятимерный массив
Давайте разберемся с двумерными массивами. Ниже initializes двумерный массив.
int[,] arr2d = new int[3,2]{ {1, 2}, {3, 4}, {5, 6} }; //или int[,] arr2d = { {1, 2}, {3, 4}, {5, 6} };
В примере двумерного массива выше [3,2] определяет количество строк и столбцов. Первое измерение представляет количество строк, второе определяет количество столбцов. На следующем рисунке показан двумерный массив, разделенный на строки и столбцы.
Следующие значения доступа к двумерному массиву.
int[,] arr2d = new int[3,2]{ {1, 2}, {3, 4}, {5, 6} }; arr2d[0, 0]; //возвращает 1 arr2d[0, 1]; //возвращает 2 arr2d[1, 0]; //возвращает 3 arr2d[1, 1]; //возвращает 4 arr2d[2, 0]; //возвращает 5 arr2d[2, 1]; //возвращает 6 //arr2d[3, 0]; //выводит ошибку выполнения времени, так как нет четвертой строки
В примере выше значения двумерного массива можно получить через индексы строк и столбцов [строчный индекс, столбцовый индекс]. Таким образом, [0, 0] возвращает значение в первой строке и первом столбце [1, 1], и возвращает значение во второй строке и втором столбце.
Теперь давайте рассмотрим трёхмерный массив. Ниже приведён пример объявления и инициализации трёхмерного массива.
int[, ,] arr3d1 = new int[1, , 2]{ { { 1, 2}, { 3, 4} } }; int[, ,] arr3d2 = new int[2, , 2]{ { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } }; int[, ,] arr3d3 = new int[2, , 3]{ { { 1, 2, 3}, {4, 5, 6} } { { 7, 8, 9}, {10, 11, 12} } }; arr3d2[0, 0, 0]; // возвращается 1 arr3d2[0, 0, 1]; // возвращается 2 arr3d2[0, 1, 0]; // возвращается 3 arr3d2[0, 1, 1]; // возвращается 4 arr3d2[1, 0, 0]; // возвращается 5 arr3d2[1, 0, 1]; // возвращается 6 arr3d2[1, 1, 0]; // возвращается 7 arr3d2[1, 1, 1]; // возвращается 8
Как вы видите в примере выше, arr3d1[1,2,2] указывает, что он будет содержать строку из двумерного массива [2,2]. arr3d2 указывает на размерности [2,2,2], что означает, что он содержит две строки из двумерного массива [2,2]. Таким образом, первое значение показывает количество строк во внутреннем двумерном массиве.
Теперь посмотрите на следующий четырёхмерный массив.
int[,,,] arr4d1 = new int[1, 1, 2, 2]{ { { { 1, 2}, { 3, 4} } } }; arr4d1[0, 0, 0, 0]; // возвращается 1 arr4d1[0, 0, 0, 1]; // возвращается 2 arr4d1[0, 0, 1, 0]; // возвращается 3 arr4d1[0, 0, 1, 1]; // возвращается 4 int[,,,] arr4d2 = new int[1, 2, 2, 2]{ { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } } }; arr4d2[0, 0, 0, 0]; // возвращается 1 arr4d2[0, 0, 0, 1]; // возвращается 2 arr4d2[0, 0, 1, 0]; // возвращается 3 arr4d2[0, 0, 1, 1]; // Возвращает 4 arr4d2[0, 1, 0, 0]; // Возвращает 5 arr4d2[0, 1, 0, 1]; // Возвращает 6 arr4d2[0, 1, 1, 0]; // Возвращает 7 arr4d2[0, 1, 1, 1]; // Возвращает 8
В примере выше, четырехмерный массив arr4d1 указан как [1, 1, 2, 2], что означает, что он содержит строку из трехмерного массива.
Таким же образом, вы можете определить и инициализировать массивы 5, 6 и до 32 измерений в C#.