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

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

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

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

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

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

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

Queue<T> Классы Queue предоставляют списки первого входа. Stack<T> Классы Stack предоставляют последние списки в первую очередь.

строгая типизация;

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

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

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

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

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

Вы можете получить доступ к элементам элемента или SortedListKeyedCollection<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).

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

Справочные материалы

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>