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


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

Обновлен: Ноябрь 2007

Говоря общими словами, коллекция — это объект, используемый для группировки взаимосвязанных объектов и управления ими. Так, у любого объекта Form есть коллекция элементов управления. (Можно получить доступ к этой коллекции с помощью формы свойства Controls.) Эта коллекция — объект, который предоставляет элементы управления данной формы. Он позволяет извлечь элемент управления в коллекции по его индексу и перебрать элементы коллекции с помощью Инструкция For Each... Next (Visual Basic).

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

Различные типы коллекций

Visual Basic Также предусмотрен класс Collection, с помощью которого можно определять и создавать собственные коллекции. Как и коллекция формы Controls, класс Collection также предоставляет встроенные функциональные возможности для организации цикла с элементами с помощью For Each... Next и для извлечения элементов по индексу. Дополнительные сведения см. в разделе Объект Collection (Visual Basic).

Однако два типа коллекций не взаимодействуют друг с другом. Например, следующий код вызовет ошибку компиляции:

Dim localControls As Collection

' The following line generates a COMPILER ERROR.

localControls = Me.Controls()

Коллекции не совместимы, так как коллекция Controls является коллекцией .NET Framework, в то время как переменная localControls является Visual Basic Collection. Два вида коллекций реализуются из различных классов. Их методы аналогичны, но не идентичны, и индексирование их схем отличается.

Коллекции с индексацией от нуля и от единицы

Коллекция может быть с индексацией от нуля или с индексацией от единицы, что зависит от ее начального индекса. Первое означает, что индекс первого элемента в коллекции равен 0, последнее означает, что 1. Примером коллекции, индексация которой ведется от нуля, является коллекция .NET Framework Controls, описанная ранее на этой странице. Visual BasicCollection объект является примером коллекции, индексация которой ведется от нуля.

Коллекция с индексацией от единицы может быть более наглядной для Visual Basic пользователей, так как индекс изменяется в диапазоне от 1 до значения Свойство Count (объект Collection), которое возвращает количество элементов в коллекции. Индекс коллекции с индексацией от нуля, напротив, изменяется в диапазоне от 0 на один меньше, чем значение свойства Count. Оно может быть соответствующим, когда значения индекса смещаются от базового значения или соответствующих членов с индексацией от нуля.

.NET Framework коллекции с индексацией от нуля служат для стандартизации. Visual BasicCollection класс имеет индексацию от единицы и служит для совместимости с предыдущими версиями.

Значения индекса и ключа

Экземпляры класса Visual BasicCollection позволяют получить доступ к элементу, используя числовой индекс или ключ String. Можно добавлять элементы к объектам Visual BasicCollection с или без указания ключа. Если добавить объект без ключа, необходимо использовать его числовой индекс для доступа к нему.

Напротив, такие коллекции, как System.Collections.ArrayList позволяют только числовой индекс. Нельзя связать ключ с элементами этих коллекций, пока не построите ваше собственное сопоставление на основе, например, String массива хранения ключей.

Добавление и удаление элементов

Коллекции различаются по тому, можно ли добавлять к ним элементы, и если да, то каким способом. Так как объект Visual BasicCollection является средством общего назначения программирования, он является более гибким, чем некоторые другие коллекции. Он имеет Метод Add (объект Collection) для помещения элементов в коллекцию и Метод Remove (объект Collection) для извлечения элементов из коллекции.

Некоторые специализированные коллекции, с другой стороны, не позволяют добавлять или удалять элементы с помощью кода. Например, свойство CheckedListBox.CheckedItems возвращает коллекцию ссылок на элементы по индексу, но ваш код не может добавить или удалить элементы из коллекции. Только пользователь имеет возможность делать это — установив или сняв соответствующее поле в интерфейсе пользователя. Следовательно, не существует метода Add или Remove для такой коллекции.

См. также

Задачи

Практическое руководство. Создание коллекции объектов

Практическое руководство. Создание массива объектов

Практическое руководство. Добавление, удаление и извлечение элементов из коллекции

Практическое руководство. Определение коллекций в классах

Практическое руководство. Перебор элементов коллекции в Visual Basic

Устранение неполадок при работе с коллекциями

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

Управление группами объектов

Классы коллекций в Visual Basic

Управление объектами с помощью коллекций