Преобразование массивов (Visual Basic)
Тип массива можно преобразовать в другой тип при соблюдении следующих условий:
Равенство ранга. Ранги двух массивов должны быть одинаковы, т.е. они должны иметь одинаковое количество размерностей. В то же время длины соответствующих измерений не обязательно должны совпадать.
Тип данных элемента. Типы данных элементов обоих массивов должны быть ссылочными типами. Нельзя преобразовать массив Integer в массив Long или даже в массив Object, так как в нем содержится по крайней мере один тип значения. Дополнительные сведения см. в разделе Типы значений и ссылочные типы.
Возможность преобразования. Преобразование между типами элементов двух массивов возможно как расширяющее, так и сужающее. Пример, который не соответствует этим требованиям — попытка преобразования между массивом String и массивом класса, производного от Attribute. Эти два типа не имеют ничего общего, и для них не существует преобразования.
Преобразование одного типа массива в другой является расширяющим или сужающим в зависимости от того, расширяющими или сужающими являются преобразования соответствующих элементов. Дополнительные сведения см. в разделе Расширяющие и сужающие преобразования (Visual Basic).
Преобразование в массив Object
Если массив Object объявлен без инициализации, типом его элементов является Object до тех пор, пока он не будет инициализирован. Когда для него задается значение массива определенного класса, он принимает тип этого класса. Однако Object остается базовым типом, и можно позднее задать для него значение массива несвязанного класса. Так как все классы являются производными от Object, можно изменять типы элементов массива одного класса на типы любого другого класса.
В следующем примере между типами student и String не существует преобразования, но оба является производными от Object, поэтому все присвоения являются допустимыми.
' Assume student has already been defined as a class.
Dim testArray() As Object
' testArray is still an Object array at this point.
Dim names() As String = New String(3) {"Name0", "Name1", "Name2", "Name3"}
testArray = New student(3) {}
' testArray is now of type student().
testArray = names
' testArray is now a String array.
Базовый тип массива
Если изначально был объявлен массив определенного класса, то базовым типом элемента является этот класс. Если в дальнейшем класс массива изменяется, необходимо выполнить преобразование между двумя классами.
В следующем примере students является массивом student. Так как преобразование между String и student не существует, последний оператор завершается с ошибкой.
Dim students() As student
Dim names() As String = New String(3) {"Name0", "Name1", "Name2", "Name3"}
students = New Student(3) {}
' The following statement fails at compile time.
students = names
См. также
Задачи
Практическое руководство. Преобразование объекта к другому типу в Visual Basic
Ссылки
Сводка типов данных (Visual Basic)
Функции преобразования типов (Visual Basic)
Основные понятия
Явные и неявные преобразования (Visual Basic)
Преобразование значений между строковыми и другими типами (Visual Basic)