Массивы в C#
Массивы в C#: объявление, инициализация, доступ по индексу, перебор, многомерные массивы и частые ошибки.
Массив — набор элементов одного типа, расположенных последовательно в памяти. Размер массива задаётся один раз при создании и не меняется.
Объявление и создание
// Способ 1 — сначала объявить, потом заполнить
int[] scores = new int[5]; // 5 нулей
scores[0] = 90;
scores[1] = 75;
// Способ 2 — сразу с начальными значениями
string[] days = { "Пн", "Вт", "Ср", "Чт", "Пт" };
Console.WriteLine(days[0]); // Пн
Console.WriteLine(days.Length); // 5
Вывод:
Пн 5
Индексы начинаются с 0. Последний элемент —
arr[arr.Length - 1]. Обращение к несуществующему индексу вызываетIndexOutOfRangeException.
Перебор элементов
int[] nums = { 10, 20, 30, 40, 50 };
// Цикл for — когда нужен индекс
for (int i = 0; i < nums.Length; i++)
Console.Write(nums[i] + " ");
Console.WriteLine();
// foreach — когда индекс не нужен
foreach (int n in nums)
Console.Write(n + " ");
Вывод:
10 20 30 40 50 10 20 30 40 50
Полезные операции
using System;
int[] data = { 5, 3, 8, 1, 9, 2 };
Array.Sort(data); // сортировка по возрастанию
Console.WriteLine(string.Join(", ", data)); // красивый вывод
Console.WriteLine(Array.IndexOf(data, 8)); // индекс значения 8
Console.WriteLine(data[^1]); // последний элемент (C# 8+)
Вывод:
1, 2, 3, 5, 8, 9 4 9
Двумерные массивы
Двумерный массив — таблица строк и столбцов:
int[,] matrix = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
Console.WriteLine(matrix[1, 2]); // строка 1, столбец 2 → 6
// Перебор двумерного массива
for (int r = 0; r < matrix.GetLength(0); r++)
{
for (int c = 0; c < matrix.GetLength(1); c++)
Console.Write(matrix[r, c] + " ");
Console.WriteLine();
}
Вывод:
6 1 2 3 4 5 6 7 8 9
Коротко
- Массив хранит элементы одного типа; размер фиксирован при создании.
- Индексация с нуля; выход за границы —
IndexOutOfRangeException. - Используйте
for, когда нужен индекс;foreach— когда нет. Array.Sort,Array.IndexOf,string.Join— часто используемые утилиты.- Двумерные массивы объявляют как
int[,]; доступ —arr[строка, столбец].
Проверьте себя
1. Что будет, если обратиться к arr[10] в массиве из 5 элементов?
AВернёт 0
BIndexOutOfRangeException во время выполнения
CОшибка компиляции
DВернёт null
2. С какого индекса начинается первый элемент массива?
A1
B0
C-1
Dзависит от типа
3. Как получить количество элементов в массиве int[] arr?
Aarr.Count
Barr.Size
Carr.Length
Darr.Count()
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.