Conversión de matrices (Visual Basic)

Puede convertir un tipo de matriz en otro diferente siempre que cumpla las condiciones siguientes:

  • Clasificación igual. Las clasificaciones de las dos matrices deben ser iguales, es decir, deben tener el mismo número de dimensiones. Pero las longitudes de las dimensiones respectivas no tienen que ser iguales.

  • Tipo de datos de los elementos. Los tipos de datos de los elementos de ambas matrices deben ser tipos de referencia. No se puede convertir una matriz Integer en una matriz Long, o incluso en una matriz Object, ya que hay al menos un tipo de valor implicado. Para obtener más información, consulta Value Types and Reference Types.

  • Convertibilidad. La conversión, ya sea de ampliación o de restricción, entre los tipos de elementos de las dos matrices debe ser posible. Un ejemplo que produce un error en este requisito es un intento de conversión entre una matriz String y una matriz de una clase derivada de System.Attribute. Estos dos tipos no tienen nada en común y no existe conversión de ningún tipo entre ellos.

Una conversión de un tipo de matriz a otro es de ampliación o restricción en función de si la conversión de los elementos respectivos es de ampliación o restricción. Para obtener más información, consulta Widening and Narrowing Conversions.

Conversión a una matriz de objetos

Cuando se declara una matriz Object sin inicializarla, su tipo de elemento es Object, siempre que permanezca sin inicializar. Cuando se establece en una matriz de una clase específica, toma el tipo de esa clase. Pero su tipo subyacente sigue siendo Object y, posteriormente, puede establecerlo en otra matriz de una clase no relacionada. Dado que todas las clases derivan de Object, puede cambiar el tipo de elemento de la matriz de cualquier clase a cualquier otra clase.

En el ejemplo siguiente no existe ninguna conversión entre tipos student y String, pero ambos derivan de Object, por lo que todas las asignaciones son 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 subyacente de una matriz

Si originalmente declara una matriz con una clase específica, su tipo de elemento subyacente es esa clase. Si posteriormente lo establece en una matriz de otra clase, debe haber una conversión entre las dos clases.

El ejemplo siguiente, students es una matriz student. Dado que no existe ninguna conversión entre String y student, se produce un error en la última instrucción.

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 también