Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Типы коллекций представляют различные способы сбора данных, таких как хэш-таблицы, очереди, стеки, пакеты, словари и списки.
Все коллекции основаны на интерфейсах 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>