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