0Pricing
C# Academy · Урок

Многомерные массивы

Таблицы и ступенчатые массивы.

«Многомерные массивы» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Объявление массивов
  2. Индексация и длина
  3. Циклы по массивам
  4. Многомерные массивы
← Назад к C# Academy