В C# существует несколько типов коллекций, предоставляемых пространством имен System.Collections и System.Collections.Generic. Они предназначены для хранения и управления наборами данных.
Коллекции в System.Collections
Эти коллекции не являются типизированными, что означает, что они могут хранить объекты любого типа.
ArrayList– динамический массив, способный изменять размер.Hashtable– хэш-таблица, использующая ключи и значения.Queue– очередь (FIFO — первым вошел, первым вышел).Stack– стек (LIFO — последним вошел, первым вышел).
Коллекции в System.Collections.Generic
Это обобщенные коллекции, которые обеспечивают безопасность типов и лучшую производительность.
List<T>– динамический массив, аналогArrayList, но типизированный.Dictionary<TKey, TValue>– хэш-таблица с ключами и значениями определенного типа.Queue<T>– обобщенная очередь.Stack<T>– обобщенный стек.HashSet<T>– коллекция уникальных элементов.LinkedList<T>– двусвязный список.
Коллекции в System.Collections.Concurrent
Эти коллекции предназначены для многопоточного доступа.
ConcurrentBag<T>– неупорядоченная коллекция для конкурентного использования.ConcurrentQueue<T>– потокобезопасная очередь.ConcurrentStack<T>– потокобезопасный стек.ConcurrentDictionary<TKey, TValue>– потокобезопасный словарь.
Immutable-коллекции (System.Collections.Immutable)
Коллекции, которые нельзя изменить после создания.
ImmutableList<T>– неизменяемый список.ImmutableDictionary<TKey, TValue>– неизменяемый словарь.ImmutableHashSet<T>– неизменяемый хэш-набор.ImmutableQueue<T>– неизменяемая очередь.ImmutableStack<T>– неизменяемый стек.
C# предоставляет широкий выбор коллекций для разных задач. Обобщенные коллекции подходят для большинства случаев, а потокобезопасные и неизменяемые коллекции полезны в многопоточных и функциональных сценариях.