Многомерные массивы
Таблицы и ступенчатые массивы.
«Многомерные массивы» — бесплатный урок C# Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.
Больше, чем одна строка
До сих пор массивы представляли собой одну строку значений. Многомерный массив хранит значения в виде таблицы, похожей на электронную таблицу со строками и столбцами.
Такие массивы отлично подходят для игровых полей, таблиц и матриц.
Объявление двумерного массива
В двумерном массиве внутри квадратных скобок используется запятая: [,]. Вы задаёте два размера: количество строк и количество столбцов.
В этой таблице 2 строки и 3 столбца, поэтому она содержит 6 значений.
int[,] grid = new int[2, 3];
Console.WriteLine(grid[0, 0]); // 0Обращение к ячейкам
Чтобы прочитать или записать ячейку, укажите через запятую индексы строки и столбца.
Оба индекса отсчитываются с нуля, как и в одномерных массивах.
int[,] grid = new int[2, 3];
grid[0, 1] = 7;
grid[1, 2] = 9;
Console.WriteLine(grid[1, 2]); // 9Инициализация таблицы
При создании двумерного массива можно заполнить его с помощью вложенных фигурных скобок. Каждая внутренняя группа представляет одну строку.
Во всех строках должно быть одинаковое количество столбцов.
int[,] grid = { { 1, 2, 3 }, { 4, 5, 6 } };
Console.WriteLine(grid[1, 0]); // 4Метод GetLength
В двумерном массиве Length возвращает общее количество ячеек. Чтобы получить размер одного измерения, используйте GetLength.
GetLength(0) — это количество строк, а GetLength(1) — количество столбцов.
int[,] grid = { { 1, 2, 3 }, { 4, 5, 6 } };
Console.WriteLine(grid.Length); // 6
Console.WriteLine(grid.GetLength(0)); // 2
Console.WriteLine(grid.GetLength(1)); // 3Перебор таблицы
Чтобы посетить каждую ячейку, используйте один цикл для строк внутри другого цикла для столбцов. Внешний цикл выбирает row, а внутренний перебирает его столбцы.
Используйте GetLength, чтобы циклы соответствовали фактическому размеру.
int[,] grid = { { 1, 2 }, { 3, 4 } };
for (int r = 0; r < grid.GetLength(0); r++)
{
for (int c = 0; c < grid.GetLength(1); c++)
{
Console.WriteLine(grid[r, c]);
}
}Полная программа с таблицей
Эта полная программа создаёт небольшую таблицу, а затем выводит каждое значение вместе с его строкой и столбцом.
Запустите её, чтобы увидеть все четыре перечисленные ячейки.
int[,] grid = { { 10, 20 }, { 30, 40 } };
for (int r = 0; r < grid.GetLength(0); r++)
{
for (int c = 0; c < grid.GetLength(1); c++)
{
Console.WriteLine("[" + r + "," + c + "] = " + grid[r, c]);
}
}Три измерения
Можно добавить измерения, увеличивая количество запятых. В трёхмерном массиве используются [,,] и три размера.
Представьте его как стопку таблиц. Такие массивы встречаются реже, но подчиняются тем же правилам.
int[,,] cube = new int[2, 2, 2];
cube[1, 1, 1] = 5;
Console.WriteLine(cube[1, 1, 1]); // 5Зубчатые массивы
Зубчатый массив — это массив массивов, записываемый как [][]. В отличие от прямоугольной таблицы, каждая строка может иметь разную длину.
Для обращения к нему используются две отдельные пары квадратных скобок.
int[][] jagged = new int[2][];
jagged[0] = new int[] { 1, 2 };
jagged[1] = new int[] { 3, 4, 5 };
Console.WriteLine(jagged[1][2]); // 5Прямоугольные и зубчатые массивы
Прямоугольный массив [,] всегда имеет строки одинаковой длины и компактно хранит данные. Зубчатый массив [][] допускает разную длину строк.
Выбирайте прямоугольный массив для настоящих таблиц, а зубчатый — когда строки естественным образом отличаются по размеру.
int[][] rows = { new[] { 1 }, new[] { 2, 3, 4 } };
Console.WriteLine(rows[0].Length); // 1
Console.WriteLine(rows[1].Length); // 3Суммирование таблицы
Можно получить сумму всех значений в таблице, складывая каждую ячейку во вложенных циклах.
Этот шаблон масштабируется для любого количества строк и столбцов.
int[,] grid = { { 1, 2 }, { 3, 4 } };
int total = 0;
foreach (int v in grid)
{
total += v;
}
Console.WriteLine(total); // 10Быстрая проверка
Проверьте свои знания о многомерных массивах.
Повторение
Вы научились создавать таблицы с помощью [,], обращаться к ячейкам по индексам строк и столбцов и определять их размеры с помощью GetLength.
Вложенные циклы посещают каждую ячейку, дополнительные запятые добавляют измерения, а зубчатые массивы [][] позволяют создавать строки разной длины. Теперь вы умеете хранить и обрабатывать таблицы данных в C#.
Часто задаваемые вопросы
Урок «Многомерные массивы» бесплатный?
Да — полный текст урока «Многомерные массивы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.
Чему я научусь в уроке «Многомерные массивы»?
Таблицы и ступенчатые массивы. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Многомерные массивы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Объявление массивов
- Индексация и длина
- Циклы по массивам
- Многомерные массивы