Підручник із колекцій C# із прикладами
⚡ Розумний підсумок
Колекції в C# забезпечують гнучкий спосіб зберігання та керування групами об'єктів. На відміну від масивів, колекції збільшуються та зменшуються під час виконання, а простори імен System.Collections та System.Collections.Generic надають готові типи для списків, словників, стеків та черг.

У нашому попередньому посібнику ми дізналися про те, як ми можемо використовувати масиви в C#. Давайте зробимо короткий огляд. Масиви в програмуванні використовуються для групування набору пов’язаних об’єктів. Отже, можна створити масив або набір цілих чисел, доступ до яких можна отримати за допомогою однієї назви змінної.
Що таке колекції в C#?
Колекції схожі на Масиви, це забезпечує більш гнучкий спосіб роботи з групою об’єктів.
Ви могли помітити, що в масивах потрібно заздалегідь визначити кількість елементів у масиві. Це потрібно було зробити під час оголошення масиву.
Але в колекції вам не потрібно заздалегідь визначати розмір колекції. Ви можете додавати елементи або навіть видаляти елементи з колекції в будь-який момент часу. Цей розділ зосередиться на тому, як ми можемо працювати з різними колекціями, доступними в C#.
Класи System.Collections
.NET Framework групує оригінальні неузагальнені класи колекцій у просторі імен System.Collections. У таблиці нижче наведено основні типи, які можна використовувати одразу.
| COLLECTION | Опис |
| ArrayList | Колекція ArrayList подібна до Arrays тип даних у C#. Найбільшою відмінністю є динамічна природа колекції списків масивів. |
| Стек | Стек — це спеціальна колекція випадків, яка представляє концепцію «останнім прийшов — першим вийшов» (LIFO). |
| черги | Черга — це спеціальна колекція випадків, яка представляє концепцію «перший прийшов, перший вийшов». |
| Хеш -таблиця | Хеш-таблиця — це спеціальна колекція, яка використовується для зберігання елементів типу «ключ-значення». |
| Відсортований список | SortedList — це колекція, яка за умовчанням зберігає пари ключ-значення в порядку зростання ключа. |
| BitArray | Масив бітів — це масив структури даних, який зберігає біти. |
Універсальні колекції в C#
Негенеричні класи, наведені вище, зберігають кожен елемент як загальний об'єкт, що означає, що компілятор не може перевірити тип, і програма платить невелику ціну за упаковку значень. Щоб вирішити цю проблему, C# додав простір імен System.Collections.Generic, де кожна колекція пов'язана з одним оголошеним типом.
Загальна колекція, така як List приймає лише рядки, тому помилки виявляються під час компіляції, і при зворотному зчитуванні елемента не потрібне перетворення типів. Це робить узагальнені колекції безпечнішими, швидшими та легшими для читання, тому вони є вибором за замовчуванням у сучасному коді C#.
Найпоширеніші універсальні колекції перелічені нижче:
- Список : Список на основі індексів, що може змінюватися за розміром, універсальна заміна ArrayList.
- Словник : Зберігає пари ключ-значення за допомогою швидкого пошуку на основі хешування.
- Хеш-набір : Зберігає лише унікальні значення та підтримує операції з множинами, такі як об'єднання.
- Черга : Колекція «перший прийшов, перший вийшов», узагальнена версія Queue.
- Стек : Колекція «останнім прийшов, першим пішов», універсальна версія Stack.
- Відсортований список : Зберігає пари ключ-значення, відсортовані за ключем у порядку зростання.
Приклад колекції списків на C#
Список є найпоширенішою узагальненою колекцією, оскільки вона поводиться як динамічний масив. У наведеному нижче прикладі створюється список рядків, додаються та видаляються елементи, зчитується його розмір, а потім виводяться значення, що залишилися. Весь код написано у файлі Program.cs.
Крок 1) Імпортуйте простір імен System.Collections.Generic та оголосіть список рядків (List).
Крок 2) Додайте елементи за допомогою методу Add, а видаліть один за допомогою методу Remove.
Крок 3) Зчитайте властивість Count, а потім переберіть список за допомогою оператора foreach.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code Пояснення:
- Простір імен System.Collections.Generic імпортовано, тому тип List доступний для програми.
- Новий список під назвою tutorials створюється, і три назви додаються за допомогою методу Add.
- Метод Remove видаляє значення «Python», що залишає два елементи у списку.
- Властивість Count повертає кількість елементів, а цикл foreach друкує кожне значення, що залишилося, по порядку.
Під час виконання програми вона спочатку виводить кількість 2, А потім Java та Котлін на окремих рядках. Це показує, як колекція змінює свій розмір під час виконання, чого не може зробити фіксований масив.
Різниця між масивами та колекціями в C#
Обидва ан масив а колекція об'єднує пов'язані елементи під одним ім'ям, проте вони поводяться по-різному під час запуску програми. Знання того, коли використовувати кожен з них, допомагає вам писати чистіший та ефективніший код.
Основні відмінності перелічені нижче:
- Розмір: Масив має фіксовану довжину, встановлену під час оголошення, тоді як колекція може збільшуватися або зменшуватися в будь-який час.
- Обробка типів: Масив зберігає один тип, тоді як колекція може бути типобезпечною з узагальненими типами або зберігати об'єкти змішаних типів, якщо вони не є узагальненими.
- Місцезнаходження: Масиви вбудовані в мову, тоді як класи колекцій знаходяться в просторах імен System.Collections та System.Collections.Generic.
- Вбудовані операції: Колекції пропонують готові методи для додавання, видалення, пошуку та сортування елементів, тоді як масиви забезпечують лише базовий індексований доступ.
- Найкраще використання: Виберіть масив, якщо кількість елементів відома та фіксована, та колекцію, якщо кількість змінюється під час виконання програми.
Коротше кажучи, масиви найкраще підходять для даних фіксованого розміру, тоді як колекції забезпечують гнучкість, яка потрібна більшості реальних застосунків.
