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


Практическое руководство. Присвоение одного массива другому (Visual Basic)

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

Назначение одного массива другому массиву

  1. Убедитесь, что два массива имеют одинаковый ранг (число измерений) и совместимые типы данных элементов.

  2. Используйте стандартную инструкцию назначения для назначения исходного массива целевому массиву. Не следует использовать ни одно имя массива с скобками.

    Dim formArray() As System.Windows.Forms.Form
    Dim controlArray() As System.Windows.Forms.Control
    controlArray = formArray
    

При назначении одного массива другому применяются следующие правила:

  • Равные ранги. Ранг (число измерений) целевого массива должен совпадать с рангом исходного массива.

    Если ряды двух массивов равны, измерения не должны быть равными. Количество элементов в заданном измерении может изменяться во время назначения.

  • Типы элементов. Оба массива должны иметь элементы ссылочного типа, либо оба массива должны иметь элементы типа значения. Для получения дополнительной информации см. Value Types and Reference Types.

    • Если оба массива имеют элементы типа значений, типы данных элемента должны быть одинаковыми. Единственное исключение заключается в том, что можно назначить массив Enum элементов массиву базового типа этого Enum.

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

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

См. также