Многомерные массивы в C#: двумерные массивы с примерами кода
Многомерные массивы в C#
В этом уроке мы изучим многомерные массивы C#, сосредоточившись на двумерных примерах с понятными фрагментами кода.
Перед изучением многомерных массивов повторите одномерные массивы C#.
В многомерном массиве каждый элемент сам является массивом. Например:
int[ ] x = { { 1, 2 ,3}, { 3, 4, 5 } };
Здесь x — двумерный массив, содержащий строки {1, 2, 3} и {3, 4, 5}. Каждая строка — массив из трёх элементов.
Двумерный массив в C#
Двумерный массив — это таблица строк и столбцов. Элементы массива — одномерные массивы.

На изображении строки {1, 2, 3} и {3, 4, 5} представляют две строки 2D массива.
1. Объявление
Объявление 2D массива:
int[ ] x = new int [2, 3];
Здесь x может хранить 2 строки и 3 столбца — всего 6 значений.
Примечание: Одинарная запятая в скобках ([ , ]) обозначает двумерный массив.
2. Инициализация
Можно инициализировать при объявлении:
int[ ] x = { { 1, 2 ,3}, { 3, 4, 5 } };
Или указать размер и значения одновременно:
int[ ] x = new int[2, 3]{ {1, 2, 3}, {3, 4, 5} };
3. Доступ к элементам
Используйте нулевые индексы: x[row, column]. Примеры:
// 2D массив
int[ ] x = { { 1, 2 ,3}, { 3, 4, 5 } };
// первый элемент первой строки
x[0, 0]; // 1
// третий элемент второй строки
x[1, 2]; // 5
// третий элемент первой строки
x[0, 2]; // 3

Пример: C# 2D массив
using System;
namespace MultiDArray {
class Program {
static void Main(string[] args) {
// инициализация 2D массива
int[ ] numbers = {{2, 3}, {4, 5}};
// доступ к первому элементу первой строки
Console.WriteLine("Element at index [0, 0] : " + numbers[0, 0]);
// доступ к первому элементу второй строки
Console.WriteLine("Element at index [1, 0] : " + numbers[1, 0]);
}
}
}
Вывод
Element at index [0, 0] : 2 Element at index [1, 0] : 4
Массив numbers имеет строки {2, 3} и {4, 5}. Печатаем значения по индексам.
numbers[0, 0]— первый элемент первой строки (2)numbers[1, 0]— первый элемент второй строки (4)
Изменение элементов
Присвоение нового значения индексу меняет массив:
using System;
namespace MultiDArray {
class Program {
static void Main(string[] args) {
int[ ] numbers = {{2, 3}, {4, 5}};
// старый элемент
Console.WriteLine("Old element at index [0, 0] : " + numbers[0, 0]);
// новое значение
numbers[0, 0] = 222;
// новый элемент
Console.WriteLine("New element at index [0, 0] : " + numbers[0, 0]);
}
}
}
Вывод
Old element at index [0, 0] : 2 New element at index [0, 0] : 222
Значение в [0, 0] меняется с 2 на 222.
Перебор вложенными циклами
using System;
namespace MultiDArray {
class Program {
static void Main(string[] args) {
int[ ] numbers = { {2, 3, 9}, {4, 5, 9} };
for(int i = 0; i < numbers.GetLength(0); i++) {
Console.Write("Row "+ i+": ");
for(int j = 0; j < numbers.GetLength(1); j++) {
Console.Write(numbers[i, j]+" ");
}
Console.WriteLine();
}
}
}
}
Вывод
Row 0: 2 3 9 Row 1: 4 5 9
Внешний цикл по строкам (GetLength(0)), внутренний по столбцам (GetLength(1)).
Примечание: Трёхмерный массив содержит несколько 2D массивов:
int[ , ] numbers = { { { 1, 3, 5 }, { 2, 4, 6 } }, { { 2, 4, 9 }, { 5, 7, 11 } } };
Здесь [ , ] (две запятые) обозначает 3D массив.
Язык C
- Коэффициенты удельного сопротивления материалов при 20°C — исчерпывающий справочник
- Массивы в C#: объявление, инициализация и операции
- Зубчатые массивы в C#: объявление, инициализация и доступ
- Как передавать массивы в функции в C++: практическое руководство
- Техники копирования массивов в Java: подробное руководство
- Освоение интерфейса NavigableSet в Java: навигация, сортировка и практические примеры
- Массивы в C++: объявление, инициализация и работа с указателями
- Динамическое выделение массивов в C++: практическое руководство с примерами кода
- Коллекции в C#: практическое руководство с реальными примерами
- MATLAB: Мастерство работы с многомерными и специальными массивами