В 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# предоставляет широкий выбор коллекций для разных задач. Обобщенные коллекции подходят для большинства случаев, а потокобезопасные и неизменяемые коллекции полезны в многопоточных и функциональных сценариях.