Прямоугольные массивы – массивы, которые содержат несколько измерений, где все строки имеют одинаковую длину.
Для увеличения мерность массива нужно в квадратных скобках дописать запятую, например:
byte[,] array0 = new byte[2, 2]; // создаст массив 2х2
byte[ , , ] array1 = new byte[2, 2, 2]; // создаст массив 2х2х2
…
Двумерный массив можно сравнить с книжным шкафом, в котором номер полки соответствует первому индексу, а номер книги на полке – второму.
Пример расположения элементов двумерного массива в памяти и пример обращения к элементам данного массива:
К многомерным массивам можно применить и другие варианты создания массива:
int[,] array1 = new int[3,3] {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
int[,] array2 = new int [,]{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
int[,] array3 = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
Как и с одномерными массивами, с прямоугольными массивами зачастую работают с помощью циклов, так и с двумерными массивами, но есть отличие: при использовании свойство Length
для указания количества итераций цикла вывод будет некорректным, поскольку данное свойство возвращает количество элементов в массиве, а не максимальное значение определённого индекса. Например, для массива 4х4 свойство Length
вернёт 16. Для получения максимального значения определённого индекса используется метод GetLength
, которому в качестве параметра нужно передать уровень вложенности индекса. Например, array.GetLength(1)
вернёт максимальное значение второго индекса в массиве.
Пример вывода двумерного массива:
static void Main()
{
int[,] array = new int[4, 7];
Console.WriteLine(array.Length);
Console.WriteLine(array.Rank);
// Заполнение массива
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
array[i, j] = i*j+1;
}
}
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.Write("{0} \t", array[i, j]);
}
Console.Write("\n");
}
// Delay.
Console.ReadKey();
}
Трёхмерный массив зачастую сравнивают с несколькими книжными шкафами. Пример описания индексов: 1 индекс – характеризует номер книжного шкафа, 2 индекс – полку в нём и 3 индекс – расположение книги на полке.
Пример расположения элементов трёхмерного массива в памяти и пример обращения к элементам данного массива:
Пример вывода значений элементов трёхмерного массива с помощью циклов:
static void Main()
{
int[,,] array =
{
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
},
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
},
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
}
};
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
for (int k = 0; k < array.GetLength(2); k++)
{
Console.Write("{0} ", array[i, j, k]);
}
Console.Write("\n");
}
Console.Write("\n");
}
// Delay.
Console.ReadKey();
}
Иногда случаются случаи, когда необходимо узнать количество измерений массива, для этого можно воспользоваться свойством Rank
, оно для трёхмерного массива вернёт 3, для четырёхмерного 4 и т.д.
Источник: видеоурок Александра Шевчука "МАССИВЫ"