Массив массивов – это массив, элементы которого сами являются массивами. Элементы массива массивов могут иметь различные размеры и измерения. Массивы массивов иногда также называются "не выровненными массивами".
Массивы массивов можно смешивать с многомерными массивами.
Зубчатый массив является массивом массивов и поэтому его элементы являются ссылочными типами и инициализируются значением null
.
Пример создания зубчатого массива и пример расположения их элементов в памяти:
Пример создания зубчатого массива используя блок инициализатора:
int[][] jagged = new[]
{
new int[] { 1, 2 },
new int[] { 1, 2, 3, 4, 5 },
new int[] { 1, 2, 3 }
};
Зубчатый массив может содержать в себе как одномерные массивы, так и многомерные:
int[][,] jagged = new int[3][,];
jagged[0] = new int[3, 3];
jagged[1] = new int[2, 3];
jagged[2] = new int[1, 2];
пример вывода элементов зубчатого массива:
static void Main()
{
int[][] jagged = new[]
{
new int[] { 1, 2 },
new int[] { 1, 2, 3, 4, 5 },
new int[] { 1, 2, 3 }
};
// Во внешнем цикле выполняется проход по всем вложенным массивам.
for (int i = 0; i < jagged.Length; ++i)
{
// Во внутреннем цикле выполняется обращение к каждому элементу вложенного массива.
for (int j = 0; j < jagged[i].Length; ++j)
{
Console.Write("{0} ", jagged[i][j]);
}
Console.Write("\n");
}
// Delay.
Console.ReadKey();
}
Примечание: в данном примере, поскольку внутренним массив является одномерным массивом, поэтому было использовано свойство Length
для получения количества элементов в нём, но если внутренний массив является многомерным, тогда нужно использовать метод GetLength
и дополнительные вложенные циклы.
Источник: видеоурок Александра Шевчука "МАССИВЫ"