Поделиться через


Часто используемые типы коллекций

Типы коллекций представляют различные способы сбора данных, таких как хэш-таблицы, очереди, стеки, пакеты, словари и списки.

Все коллекции основаны на интерфейсах ICollection или ICollection<T>, прямо или косвенно. IList и IDictionary их универсальные аналоги являются производными от этих двух интерфейсов.

В коллекциях на основе IList или напрямую на ICollection, каждый элемент содержит только значение. К этим типам относятся:

В коллекциях на IDictionary основе интерфейса каждый элемент содержит ключ и значение. К этим типам относятся:

Класс KeyedCollection<TKey,TItem> уникален, так как это список значений с ключами, внедренными в значения. В результате он ведет себя как как список, так и как словарь.

Если вам нужен эффективный многопотоковый доступ к коллекции, используйте универсальные коллекции в System.Collections.Concurrent пространстве имен.

Классы Queue и Queue<T> предоставляют списки очереди с алгоритмом "первый пришёл, первый вышел". Классы Stack и Stack<T> предоставляют списки типа последний пришёл - первый вышел.

Строгая типизация

Универсальные коллекции — это лучшее решение для строгого ввода. Например, добавление элемента любого типа, отличного от Int32List<Int32> коллекции, приводит к ошибке во время компиляции. Однако если язык не поддерживает универсальные шаблоны, System.Collections пространство имен включает абстрактные базовые классы, которые можно расширить для создания классов коллекций, которые строго типизированы. К этим базовым классам относятся следующие:

Изменение коллекций

Коллекции зависят от того, как они хранят, сортируют и сравнивают элементы, а также как они выполняют поиск.

Класс SortedList и универсальный класс SortedList<TKey,TValue> предоставляют отсортированные версии класса Hashtable и универсального класса Dictionary<TKey,TValue>.

Все коллекции используют индексы с начальным значением ноль, за исключением Array, который позволяет использовать массивы с ненулевой основой.

Вы можете получить доступ к элементам SortedList или KeyedCollection<TKey,TItem> либо по ключу, либо по индексу элемента. Доступ к элементам Hashtable или Dictionary<TKey,TValue> можно получить только по ключу элемента.

Использование LINQ с типами коллекций

Функция LINQ to Objects предоставляет общий шаблон для доступа к объектам в памяти любого типа, реализующего IEnumerable или IEnumerable<T>. Запросы LINQ имеют несколько преимуществ по сравнению со стандартными конструкциями, такими как foreach циклы:

  • Они кратки и легче понять.
  • Они могут фильтровать, упорядочить и группировать данные.
  • Они могут повысить производительность.

Дополнительные сведения см. в документации LINQ to Objects (C#), LINQ to Objects (Visual Basic) и Parallel LINQ (PLINQ).

Название Описание
Коллекции и структуры данных Обсуждает различные типы коллекций, доступные в .NET, включая стеки, очереди, списки, массивы и словари.
Типы коллекций хеш-таблиц и словарей данных Описывает функции универсальных и негенерических типов словарей на основе хэша.
Отсортированные типы коллекций Описывает классы, предоставляющие функции сортировки для списков и наборов.
Обобщения Описывает универсальные функции, включая универсальные коллекции, делегаты и интерфейсы, предоставляемые .NET. Содержит ссылки на документацию по функциям для C#, Visual Basic и Visual C++, а также на поддержку таких технологий, как отражение.

Справка

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey,TValue>