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


Устранение неполадок, связанных с массивами (Visual Basic)

На этой странице перечислены некоторые общие проблемы, которые могут возникнуть при работе с массивами.

Ошибки компиляции при объявлении и инициализации массива

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

  • Указание предложения Оператор New (Visual Basic) после указания размерностей при объявлении переменной массива. Следующие строки кода показывают недопустимые объявления этого типа.

    Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()

    Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)

    Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()

  • Указание размерностей для массива не верхнего уровня в многомерном массиве. Следующая строка кода показывает недопустимое объявление этого типа.

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • Пропуск ключевого слова New при указании значения элементов. Следующая строка кода показывает недопустимое объявление этого типа.

    Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}

  • Указание предложения New без фигурных скобок ({}). Следующие строки кода показывают недопустимые объявления этого типа.

    Dim INVALIDsingleDimByteArray() As Byte = New Byte()

    Dim INVALIDsingleDimByteArray() As Byte = New Byte(2)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(,)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(1, 1)

Доступ к массиву за его пределами

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

Определение границ

Если другой компонент передает массив в код (например в качестве аргумента процедуры) размер массива или длина его измерений неизвестна. Следует всегда определять верхнюю границу для каждого измерения массива до попытки получения доступа к какому-либо элементу. Если массив был создан с помощью некоторых средств, отличных от Visual Basic предложений New, то нижняя граница может быть отлична от 0, и лучше всего также определить и нижнюю границу.

Указание измерения

При определении границ многомерного массива следите за указанием измерения. Параметры dimension методов GetLowerBound и GetUpperBound отсчитываются от 0, а параметры Rank функций LBound и UBound Visual Basic — от 1.

См. также

Задачи

Практическое руководство. Инициализация переменных массива в Visual Basic

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

Массивы в Visual Basic