Работа с коллекциями в .NET Framework с помощью Visual Basic
Обновлен: Ноябрь 2007
.NET Framework предоставляет специализированные классы для хранения и извлечения данных. Эти классы обеспечивают поддержку стеков, очередей, списков и хэш-таблиц. Большинство классов коллекций реализовывают те же интерфейсы. При необходимости можно создать собственные классы коллекций путем реализации этих интерфейсов.
Необходимо определить, какой тип коллекций наиболее подходит для ваших нужд.
Различия между классами коллекций Visual Basic и .NET Framework
Классы коллекций .NET Framework определяются в пространствах имен System.Collections, System.Collections.GenericSystem.Collections.Specialized и System.Collections.ObjectModel. Основные различия между классами коллекций Visual Basic и .NET Framework включают:
Основание индекса. Коллекции .NET Framework отсчитываются от нуля, в то время как коллекции Visual Basic — от единицы. Это означает, что элементы коллекции Visual Basic имеют значения индекса от 1 до значения Свойство Count (объект Collection), тогда как элементы коллекции .NET Framework имеют значения индекса от 0 до значения, на единицу меньшего, чем значение свойства коллекции Count.
Тип элемента. Коллекция Visual Basic поддерживает элементы типа Object. Эта коллекция не является строго типизированной — в нее можно добавить элемент любого типа данных. Это обычно приводит к низкой производительности, так как необходимо преобразовывать элементы из типа данных Object в их истинный тип данных.
Некоторые коллекции .NET Framework также содержат элементы типа Object, но многие другие являются строго типизированными, то есть поддерживают элементы определенного типа, что обычно приводит к оптимальной производительности.
Элементы, снабженные ключами. Коллекция Visual Basic позволяет указать ключ при добавлении элемента к ней. Ключ является уникальным строковым значением, которое можно использовать позже для доступа к данному конкретному элементу. Коллекции .NET Framework различаются в отношении использования ключей. Некоторые поддерживают ключи, а некоторые нет.
Классы System.Collections
Классы в пространстве имен System.Collections не хранят элементы в виде конкретно типизированных объектов, а хранят их как объекты типа Object.
В следующей таблице перечислены некоторые из часто используемых классов:
Класс |
Описание |
---|---|
Реализует интерфейс IList с помощью массива с динамическим увеличением размера при необходимости. |
|
Управляет компактным массивом двоичных значений, представленных величинами Boolean, где True показывает, что бит включен (1), а False показывает, что бит выключен (0). |
|
Предоставляет коллекцию пар ключ/значение, которые упорядочены по хэш-коду ключа. |
|
Предоставляет коллекцию объектов, которая обслуживается по принципу "первым пришел — первым вышел" (FIFO). |
|
Представляет простую неуниверсальную коллекцию объектов типа "последним пришел — первым вышел" (LIFO). |
Классы System.Collections.Generic и System.Collections.ObjectModel
Пространства имен System.Collections.Generic и System.Collections.ObjectModel предоставляют базовые типы, которые позволяют создавать строго типизированные коллекции со и указывать тип данных элементов при их создании.
В следующей таблице перечислены некоторые из часто используемых классов:
Класс |
Описание |
---|---|
Предоставляет базовый класс для универсальных коллекций. |
|
Предоставляет коллекцию пар ключ/значение, которые упорядочены по ключу. |
|
Предоставляет абстрактный базовый класс для коллекции, ключи которой внедрены в значения. |
|
Представляет двусвязный список. |
|
Предоставляет узел в LinkedList<T>. Этот класс не наследуется. |
|
Реализует интерфейс IList<T> с помощью массива с динамическим изменением размера по требованию. |
|
Предоставляет коллекцию объектов, которая обслуживается по принципу "первым пришел — первым вышел" (FIFO). |
|
Представляет коллекцию пар ключ/значение, упорядоченных по ключу. |
|
Представляет коллекцию пар ключ/значение, упорядоченных по ключу на основе реализации IComparer<T>. |
|
Представляет коллекцию переменного размера экземпляров того же произвольного типа, имеющую тип "последним пришел - первым вышел" (LIFO). |
|
Предоставляет базовый класс для универсальной коллекции, доступной только для чтения. |
Классы System.Collections.Specialized
Пространство имен System.Collections.Specialized предоставляет специализированные строго типизированные классы коллекций, такие как коллекции строк, связанные списки и гибридные словари.
В следующей таблице перечислены некоторые из часто используемых классов:
Класс |
Описание |
---|---|
Создает коллекции, в которых не учитывается регистр строк. |
|
Реализует интерфейс IDictionary с помощью класса ListDictionary, когда коллекция небольшая, и переключается на класс Hashtable, когда коллекция увеличивается. |
|
Реализует интерфейс IDictionary с помощью однонаправленного списка. Рекомендуется для коллекций, которые обычно содержат не больше 10 элементов. |
|
Предоставляет абстрактный базовый класс для коллекции связанных строковых ключей и значений объектов, доступ к которым можно получить по ключу или индексу. |
|
Представляет коллекцию связанных строковых ключей и строковых значений, доступ к которым можно получить по ключу или индексу. |
|
Предоставляет коллекцию пар ключ/значение, которые упорядочены по ключу или индексу. |
|
Представляет коллекцию строк. |
|
Реализует хэш-таблицу с ключом и значением, строго типизированными как строки, а не объекты. |
См. также
Основные понятия
Ссылки
Объект Collection (Visual Basic)