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

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

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

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

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

  • Указание предложения 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, а параметры RankVisual BasicФункция LBound (Visual Basic) и Функция UBound (Visual Basic) — от 1.

См. также

Задачи

Практическое руководство. Объявление переменной типа массива

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

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

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

Практическое руководство. Создание массива со смешанными типами элементов

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

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

Практическое руководство. Инициализация многомерного массива

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

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

Массивы в Visual Basic