Поделиться через


Работа с коллекциями в .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.

В следующей таблице перечислены некоторые из часто используемых классов:

Класс

Описание

ArrayList

Реализует интерфейс IList с помощью массива с динамическим увеличением размера при необходимости.

BitArray

Управляет компактным массивом двоичных значений, представленных величинами Boolean, где True показывает, что бит включен (1), а False показывает, что бит выключен (0).

Hashtable

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

Queue

Предоставляет коллекцию объектов, которая обслуживается по принципу "первым пришел — первым вышел" (FIFO).

Stack

Представляет простую неуниверсальную коллекцию объектов типа "последним пришел — первым вышел" (LIFO).

Классы System.Collections.Generic и System.Collections.ObjectModel

Пространства имен System.Collections.Generic и System.Collections.ObjectModel предоставляют базовые типы, которые позволяют создавать строго типизированные коллекции со и указывать тип данных элементов при их создании.

В следующей таблице перечислены некоторые из часто используемых классов:

Класс

Описание

Collection<T>

Предоставляет базовый класс для универсальных коллекций.

Dictionary<TKey, TValue>

Предоставляет коллекцию пар ключ/значение, которые упорядочены по ключу.

KeyedCollection<TKey, TItem>

Предоставляет абстрактный базовый класс для коллекции, ключи которой внедрены в значения.

LinkedList<T>

Представляет двусвязный список.

LinkedListNode<T>

Предоставляет узел в LinkedList<T>. Этот класс не наследуется.

List<T>

Реализует интерфейс IList<T> с помощью массива с динамическим изменением размера по требованию.

Queue<T>

Предоставляет коллекцию объектов, которая обслуживается по принципу "первым пришел — первым вышел" (FIFO).

SortedDictionary<TKey, TValue>

Представляет коллекцию пар ключ/значение, упорядоченных по ключу.

SortedList<TKey, TValue>

Представляет коллекцию пар ключ/значение, упорядоченных по ключу на основе реализации IComparer<T>.

Stack<T>

Представляет коллекцию переменного размера экземпляров того же произвольного типа, имеющую тип "последним пришел - первым вышел" (LIFO).

ReadOnlyCollection<T>

Предоставляет базовый класс для универсальной коллекции, доступной только для чтения.

Классы System.Collections.Specialized

Пространство имен System.Collections.Specialized предоставляет специализированные строго типизированные классы коллекций, такие как коллекции строк, связанные списки и гибридные словари.

В следующей таблице перечислены некоторые из часто используемых классов:

Класс

Описание

CollectionsUtil

Создает коллекции, в которых не учитывается регистр строк.

HybridDictionary

Реализует интерфейс IDictionary с помощью класса ListDictionary, когда коллекция небольшая, и переключается на класс Hashtable, когда коллекция увеличивается.

ListDictionary

Реализует интерфейс IDictionary с помощью однонаправленного списка. Рекомендуется для коллекций, которые обычно содержат не больше 10 элементов.

NameObjectCollectionBase

Предоставляет абстрактный базовый класс для коллекции связанных строковых ключей и значений объектов, доступ к которым можно получить по ключу или индексу.

NameValueCollection

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

OrderedDictionary

Предоставляет коллекцию пар ключ/значение, которые упорядочены по ключу или индексу.

StringCollection

Представляет коллекцию строк.

StringDictionary

Реализует хэш-таблицу с ключом и значением, строго типизированными как строки, а не объекты.

См. также

Основные понятия

Коллекции в Visual Basic

Ссылки

Объект Collection (Visual Basic)

Другие ресурсы

Идём дальше с Visual Basic