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

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

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

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

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

    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 методов и GetUpperBound основаны на GetLowerBound 0, а Rank параметры Visual Basic LBound и UBound функций — на основе 1.

См. также