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


Оператор ReDim (Visual Basic)

Перераспределяет память для переменной массива.

ReDim [ Preserve ] name(boundlist) [ ,  name(boundlist) [, ... ] ]

Части

Термин

Определение

Preserve

Необязательный параметр.Данный модификатор используется для хранения данных существующего массива при изменении размера только последней размерности массива.

name

Обязательное.Имя переменной массива.См. раздел Имена объявленных типов (Visual Basic).

boundlist

Обязательное.Список границ каждой размерности переопределенного массива.

Заметки

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

Оператор ReDim предназначен только для массивов.Недопустимо в скалярах (переменных, которые содержат только одно значение), коллекциях, или структурах.Обратите внимание, что если объявить переменную с типом Array, выписка ReDim не имеет достаточных сведений о типе для создания нового массива.

Оператор ReDim может быть использован только на уровне процедуры.Поэтому контекст для объявления переменной должен быть подпрограммой; не может быть файл источника, пространства имен, интерфейса, классом, структурой, модуль или блоком.Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию (Visual Basic).

Правила

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

  • Границы массива. Каждая запись в boundlist может задавать нижнюю и верхнюю границу этого измерения.Нижняя граница всегда 0 (ноль).Верхняя граница наибольшее возможное значение индекса для этого измерения, не размерности (верхняя граница, плюс единица).Индекс для каждого измерения может отличаться в зависимости от 0 до верхней границы его значение.

    Число измерений в boundlist должно совпадать с исходным количеством измерений (ранжирования) массива.

  • Типы данных. Выписка ReDim не может изменить тип данных переменной массива или его элементов.

  • Инициализация. Оператор ReDim не может предоставить новые значения инициализации для элементов массива.

  • Ранг Оператор ReDim не может изменять ранг (число измерений) массива.

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

    Например, в одномерных массивах можно изменить размер размерности и сохранить все содержимое массива, поскольку изменяется только одна размерность.Однако если массив имеет две или несколько размерностей, то с помощью ключевого слова Preserve можно изменить только размер последней размерности массива.

  • Свойства. Оператор ReDim можно использовать для свойств массива значений.

Поведение

  • Замена массива. Оператор ReDim освобождает существующий массив и создает новый массив с таким же рангом.Новый массив заменяет существующий массив в переменной массива.

  • Инициализация без ключевого слова Preserve. Если не задать Preserve, метод ReDim инициализирует элементы массива с помощью нового значения по умолчанию для собственного типа данных.

  • Инициализация с помощью ключевого слова Preserve. Если задано значение Preserve, то Visual Basic копирует элементы из существующего массива в новый массив.

Пример

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

Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)

Выписка Dim создает новый массив с 3 измерениями.Каждое измерение объявлено с границей 10, поэтому индекс массива для каждого измерения может быть в диапазоне от 0 до 10.В следующем обсуждении, 3 измерения называются уровень, строка и столбец.

Первый оператор ReDim создает новый массив, заменяющий существующий массив в переменной intArray.ReDim копирует все элементы из существующего массива в новый массив.Он также добавляет 10 больше столбцов в конец каждой строки в каждом уровне и инициализирует элементы в этих новых столбцов значение 0 (значение по умолчанию Integer, которое тип элементов массива).

Второй ReDim создает еще один новый массив и копирует все элементы, приспосабливают.Однако в конце каждой строки каждого уровня пропадают пять столбцов.Эти столбцы можно больше не использовать.Уменьшение размера большого массива позволяет освободить память, которая больше не используется.

Третье ReDim создает еще один новый массив и удаляет другие 5 столбцов в конце каждой строки каждого уровня.В этот раз не выполняется копирование никаких элементов.Это выписка отменить массив в исходное размера.Поскольку выписка не включает модификатор Preserve, он устанавливает все элементы массива в исходном значения по умолчанию.

Дополнительные примеры см. в разделе Массивы в Visual Basic.

См. также

Ссылки

Оператор Const (Visual Basic)

Оператор Dim (Visual Basic)

Оператор Erase (Visual Basic)

Nothing (Visual Basic)

IndexOutOfRangeException

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

Массивы в Visual Basic