Массивы в 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()

Закрепите практикой

Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.

Поддержать проект