Características avanzadas de las matrices

Visual Studio .NET 2003

Es posible asignar el contenido de una matriz a otra, crear funciones que acepten y devuelvan matrices y crear propiedades que acepten y devuelvan matrices. En muchos casos, estas técnicas pueden mejorar el rendimiento de la aplicación.

Asignación de matrices

Puesto que las matrices son objetos, pueden utilizarse en instrucciones de asignación como cualquier otro tipo de objeto. En la asignación de una matriz a otra, se aplican las siguientes reglas:

  • El rango (número de dimensiones) de la matriz de destino debe coincidir con el de la matriz de origen.
  • Siempre que los rangos de las dos matrices sean iguales, no es necesario que las dimensiones sean iguales. El número de elementos de una dimensión dada puede cambiar durante la asignación.
  • Ambas matrices deben tener elementos de tipo referencia o bien ambas matrices deben tener elementos de tipo valor.
  • Si ambas matrices tienen elementos de tipo valor, los tipos de datos deben coincidir exactamente.
  • En cambio, si ambas matrices tienen elementos de tipo referencia, debe existir una conversión de ampliación del tipo de elemento de origen al tipo de elemento de destino.

El compilador notifica un error si las reglas anteriores no se cumplen, por ejemplo, si un tipo de datos no se puede convertir o si los rangos no son iguales. Se puede incluir control de errores en el código para comprobar si las matrices son compatibles antes de intentar realizar la asignación.

Devolver una matriz desde una función

Una función puede devolver una matriz de valores. Por ejemplo, quizá se desee devolver una matriz de elementos de tipo Byte sin tener que realizar conversiones entre este tipo y el tipo string. En el siguiente ejemplo, el procedimiento Function ArrayFunction devuelve una matriz de bytes.

Dim B As Byte = CByte(54)   ' Seed value for ArrayFunction argument. 
Dim I As Integer   ' Loop counter for displaying returned values. 
Dim ReturnArray() As Byte   ' To be set from ArrayFunction return. 
ReturnArray = ArrayFunction(B) 
For I = 0 To ReturnArray.GetUpperBound(0)   ' Highest subscript. 
   Debug.WriteLine("Byte " & I & ": " & ReturnArray(I)) 
Next I 
' ... 
Public Function ArrayFunction(ByVal B As Byte) As Byte() 
   Dim X(2) As Byte   ' Allocates three elements. 
   X(0) = B 
   X(1) = B + B 
   X(2) = B + CByte(200) 
   Return X 
End Function 

Después de ejecutar el ejemplo anterior, ReturnArray apunta a una matriz de tres elementos que contiene los valores de elemento asignados a la matriz X en ArrayFunction. En este ejemplo, ReturnArray debe tener el mismo tipo de elementos que la matriz devuelta por la función, ya que se trata de un tipo de valor (en este caso Byte). Si los tipos de elementos de ReturnArray y ArrayFunction hubieran sido tipos de referencia, hubiera sido aceptable una conversión de ampliación.

Vea también

Byte (Tipo de datos) | Información general sobre las matrices | Utilización de matrices | Declarar variables de matriz | Matrices de matrices | Colecciones como alternativa a las matrices | Tipos de valor y tipos de referencia | Conversiones de ampliación y de restricción | Conversiones de matrices

Mostrar: