Partilhar via


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 uma Long matriz, ou mesmo em uma Object 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  

Consulte também