Часто используемые типы коллекций
Типы коллекций представляют различные способы сбора данных, таких как хэш-таблицы, очереди, стеки, пакеты, словари и списки.
Все коллекции основаны на ICollection интерфейсах ICollection<T> или прямо или косвенно. IList и IDictionary их универсальные аналоги являются производными от этих двух интерфейсов.
В коллекциях на основе IList или непосредственно ICollectionна каждом элементе содержится только значение. К таким типам относятся:
В коллекциях на IDictionary основе интерфейса каждый элемент содержит ключ и значение. К таким типам относятся:
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
Класс 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.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>