Підрозділ 2.14
Масиви
Знайомить із масивами: оголошенням, індексами, довжиною, перебором, багатовимірними та зубчастими масивами.
2.14. Масиви
До цього моменту кожне значення зберігалося в окремій змінній. Але якщо потрібно зберегти вік 50 пацієнтів або показники тиску за 30 вимірювань — оголошувати 50 або 30 окремих змінних украй незручно. Для зберігання наборів однотипних значень призначені масиви.
Масив — це послідовність фіксованого розміру, що зберігає елементи одного типу в суміжних комірках пам'яті. Після оголошення кількість елементів масиву не змінюється.
Оголошення та ініціалізація масиву
Синтаксис оголошення відрізняється від звичайної змінної наявністю квадратних дужок після типу:
тип[] назва = new тип[розмір];Масив також можна ініціалізувати значеннями відразу при оголошенні. Усі варіанти еквівалентні:
Аналогічно для рядків:
Індекси та доступ до елементів

Кожен елемент масиву має індекс — ціле число, яке вказує його позицію. Нумерація починається з нуля: перший елемент має індекс 0, другий — 1, останній — довжина - 1.
Елементи можна змінювати через індекс:
Якщо вказати індекс за межами масиву, виникне виняток IndexOutOfRangeException під час виконання:
Властивість Length
Кожен масив має властивість Length, що повертає загальну кількість його елементів. Її важливо використовувати у циклах замість «магічних чисел»:
Оператор ^ (індекс від кінця)
Починаючи з C# 8.0, можна звертатися до елементів масиву від кінця за допомогою оператора ^. ^1 — останній елемент, ^2 — передостанній тощо:
readings[^1] — це лаконічний еквівалент readings[readings.Length - 1].
Перебір масиву
foreach
Для послідовного перебору всіх елементів найбільш читабельним є foreach:
for
Якщо потрібен індекс або зміна елементів — використовуйте for:
foreach не дозволяє змінювати елементи колекції через змінну циклу — лише читати. Тому для модифікації елементів завжди застосовуйте for.
Багатовимірні масиви
Масиви можуть бути багатовимірними. Найчастіше використовуються двовимірні масиви — вони представляють таблиці (матриці).

Для оголошення двовимірного масиву в квадратних дужках вказується кома, що розділяє розміри:
schedule.GetUpperBound(0) + 1 повертає кількість рядків, GetUpperBound(1) + 1 — кількість стовпців. Загальна довжина двовимірного масиву через Length — це добуток усіх розмірностей (тут: 3 × 4 = 12).
Масиви можуть мати й більшу кількість вимірів (тривимірні тощо), але на практиці частіше застосовуються одно- та двовимірні.
Зубчастий масив (масив масивів)
На відміну від прямокутного двовимірного масиву, зубчастий масив (jagged array) — це масив, що містить інші масиви, причому кожен підмасив може мати різну довжину. Оголошується через подвійні квадратні дужки [][]:
Зубчастий масив застосовується там, де підмасиви мають різні розміри. Якщо всі рядки однакової довжини — зручніше використовувати прямокутний [,].
Основні поняття масивів
| Поняття | Опис | Приклад |
|---|---|---|
| Ранг | Кількість вимірів | int[,] — ранг 2 |
| Довжина виміру | Розмір конкретного виміру | new int[3, 4] — 3 рядки, 4 стовпці |
| Length | Загальна кількість елементів | 3 × 4 = 12 |
| Індекс | Номер елемента (з нуля) | arr[0] — перший |
| ^-оператор | Індекс від кінця | arr[^1] — останній |