Compartilhar 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 classificações das duas matrizes devem ser as mesmas, ou seja, elas devem ter o mesmo número de dimensões. No entanto, os comprimentos das respectivas 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. Você não pode converter uma Integer matriz em uma Long matriz ou até 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.

  • Convertibilidade. Uma conversão, ampliando ou restringindo, deve ser possível entre os tipos de elemento 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. Esses 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 é de ampliação ou de restrição dependendo se a conversão dos respectivos elementos está ampliando ou restringindo. Para obter mais informações, consulte Ampliando e restringindo conversões.

Conversão em uma matriz de objetos

Quando você declara uma Object matriz sem inicializá-la, seu tipo de elemento é Object desde que ela permaneça não inicializada. 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 atribuí-lo a outro array de uma classe não relacionada. Como todas as classes derivam de Object, você pode alterar o tipo de elemento da matriz de qualquer classe para qualquer outra classe.

No exemplo a seguir, nenhuma conversão existe entre tipos student e String, mas ambas 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-la como uma matriz de outra classe, deverá haver uma conversão entre as duas classes.

No exemplo a seguir, students é um student vetor. 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