Коллекции в Visual Basic
В общих словах коллекция является объектом, используемым для группировки связанных объектов и управления ими. Например, каждая форма Form имеет коллекцию элементов управления. (Можно получить доступ к этой коллекции с помощью формы свойства Controls.) Эта коллекция — объект, который предоставляет элементы управления данной формы. Он позволяет извлечь элемент управления в коллекции по его индексу и перебрать элементы коллекции с помощью Оператор For Each... Next (Visual Basic).
Однако есть несколько типов коллекций, и они отличаются друг от друга в некоторых случаях.
Различные типы коллекций
Visual Basic Также предусмотрен класс Collection, с помощью которого можно определять и создавать собственные коллекции. Как и коллекция формы Controls, класс Collection также предоставляет встроенные функциональные возможности для организации цикла с элементами с помощью For Each... Next и для извлечения элементов по индексу. Дополнительные сведения см. в разделе Collection.
Однако два типа коллекций не взаимодействуют друг с другом. Например, следующий код вызовет ошибку компиляции:
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 Basic Collection объект является примером коллекции, индексация которой ведется от нуля.
Коллекция с индексацией от единицы может быть более наглядной для пользователей Visual Basic, так как индекс изменяется в диапазоне от 1 до значения свойства Count, которое возвращает количество элементов в коллекции. Индекс коллекции с индексацией от нуля, напротив, изменяется в диапазоне от 0 на один меньше, чем значение свойства Count. Оно может быть соответствующим, когда значения индекса смещаются от базового значения или соответствующих членов с индексацией от нуля.
.NET Framework коллекции с индексацией от нуля служат для стандартизации. Visual Basic Collection класс имеет индексацию от единицы и служит для совместимости с предыдущими версиями.
Значения индекса и ключа
Экземпляры класса Visual Basic Collection позволяют получить доступ к элементу, используя числовой индекс или ключ String. Можно добавлять элементы к объектам Visual Basic Collection с или без указания ключа. Если добавить объект без ключа, необходимо использовать его числовой индекс для доступа к нему.
Напротив, такие коллекции, как System.Collections.ArrayList позволяют только числовой индекс. Нельзя связать ключ с элементами этих коллекций, пока не построите ваше собственное сопоставление на основе, например, String массива хранения ключей.
Добавление и удаление элементов
Коллекции различаются по тому, можно ли добавлять к ним элементы, и если да, то каким способом. Так как объект Visual Basic Collection является средством общего назначения программирования, он является более гибким, чем некоторые другие коллекции. Он имеет метод Add для помещения элементов в коллекцию и метод Remove для извлечения элементов из коллекции.
Некоторые специализированные коллекции, с другой стороны, не позволяют добавлять или удалять элементы с помощью кода. Например, свойство CheckedListBox.CheckedItems возвращает коллекцию ссылок на элементы по индексу, но ваш код не может добавить или удалить элементы из коллекции. Только пользователь имеет возможность делать это — установив или сняв соответствующее поле в интерфейсе пользователя. Следовательно, не существует метода Add или Remove для такой коллекции.
См. также
Задачи
Практическое руководство. Создание коллекции объектов (Visual Basic)
Практическое руководство. Создание массива объектов (Visual Basic)
Практическое руководство. Добавление, удаление и извлечение элементов из коллекции (Visual Basic)
Практическое руководство. Определение коллекций в классах (Visual Basic)
Практическое руководство. Перебор элементов коллекции в Visual Basic
Устранение неполадок при работе с коллекциями (Visual Basic)
Основные понятия
Общие сведения о инициализаторах наборов (Visual Basic)
Управление группами объектов в Visual Basic