Conversões de matriz (Visual Basic)
Você pode converter um tipo de matriz em um tipo de matriz diferente, desde que atenda às seguintes condições:
Classificação igual. As fileiras das duas matrizes devem ser as mesmas, ou seja, devem ter o mesmo número de dimensões. No entanto, os comprimentos das respetivas dimensões não precisam ser os mesmos.
Tipo de dados do elemento. Os tipos de dados dos elementos de ambas as matrizes devem ser tipos de referência. Não é possível converter uma
Integer
matriz em umaLong
matriz, ou mesmo em umaObject
matriz, porque pelo menos um tipo de valor está envolvido. Para obter mais informações, consulte Tipos de valor e tipos de referência.Conversibilidade. Uma conversão, seja ampliando ou estreitando, deve ser possível entre os tipos de elementos das duas matrizes. Um exemplo que falha nesse requisito é uma tentativa de conversão entre uma
String
matriz e uma matriz de uma classe derivada de System.Attribute. Estes dois tipos não têm nada em comum, e nenhuma conversão de qualquer tipo existe entre eles.
Uma conversão de um tipo de matriz para outro está se ampliando ou estreitando, dependendo se a conversão dos respetivos elementos está se ampliando ou estreitando. Para obter mais informações, consulte Ampliando e restringindo conversões.
Conversão para uma matriz de objetos
Quando você declara uma Object
matriz sem inicializá-la, seu tipo de elemento é Object
desde que permaneça não inicializado. Quando você a define como uma matriz de uma classe específica, ela assume o tipo dessa classe. No entanto, seu tipo subjacente ainda Object
é , e você pode posteriormente defini-lo para outra matriz de uma classe não relacionada. Como todas as classes derivam do Object
, você pode alterar o tipo de elemento da matriz de qualquer classe para qualquer outra classe.
No exemplo a seguir, não existe conversão entre tipos student
e String
, mas ambos derivam de Object
, portanto, todas as atribuições são válidas.
' 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.
Tipo subjacente de uma matriz
Se você declarar originalmente uma matriz com uma classe específica, seu tipo de elemento subjacente será essa classe. Se, posteriormente, você defini-lo para uma matriz de outra classe, deve haver uma conversão entre as duas classes.
No exemplo a seguir, students
é uma student
matriz. Como não existe conversão entre String
e student
, a última instrução falha.
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