English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# базовый учебник

C# продвинутый учебник

C# направленный на объекты (OOP)

C# многомерные массивы

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#.