Compartir a través de


Conversiones de matriz (Visual Basic)

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

  • Igual rango. Las clasificaciones de las dos matrices deben ser iguales, es decir, deben tener el mismo número de dimensiones. Sin embargo, las longitudes de las dimensiones respectivas no necesitan ser las mismas.

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

  • Convertibilidad. Una conversión, ya sea de ampliación o de restricción, debe ser posible entre los tipos de elemento de las dos matrices. Un ejemplo que produce un error en este requisito es una conversión intentada entre una String matriz y una matriz de una clase derivada de System.Attribute. Estos dos tipos no tienen nada en común y no existe ninguna 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 Object matriz 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. Sin embargo, 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 ambas 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.

En el ejemplo siguiente, students es una student matriz. 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