Una matriz que contiene otras matrices como elementos se conoce como matriz de matrices o matriz escalonada. Una matriz escalonada y cada elemento de una matriz escalonada pueden tener una o más dimensiones. A veces la estructura de datos de la aplicación es bidimensional pero no rectangular.
El ejemplo siguiente tiene una matriz de meses, siendo cada elemento una matriz de días. Puesto que los distintos meses tienen un número diferente de días, los elementos no forman una matriz bidimensional rectangular. Por lo tanto, se usa una matriz escalonada en lugar de una matriz multidimensional.
' Declare the jagged array. ' The New clause sets the array variable to a 12-element ' array. Each element is an array of Double elements. Dim sales()() As Double = New Double(11)() {} ' Set each element of the sales array to a Double ' array of the appropriate size. For month As Integer = 0 To 11 Dim days As Integer = DateTime.DaysInMonth(Year(Now), month + 1) sales(month) = New Double(days - 1) {} Next month ' Store values in each element. For month As Integer = 0 To 11 Dim upper = sales(month).GetUpperBound(0) For day = 0 To upper sales(month)(day) = (month * 100) + day Next Next
Una matriz que no contiene ningún elemento también se denomina matriz de longitud cero. Una variable que contiene una matriz de longitud cero no tiene el valor
Nothing
. Para crear una matriz que no tenga elementos, declare una de las dimensiones de la matriz para que sea -1, tal como se muestra en el ejemplo siguiente.Dim twoDimensionalStrings(-1, 3) As String
Puede que tenga que crear una matriz de longitud cero en las circunstancias siguientes:
- Sin arriesgarse a una excepción NullReferenceException, el código debe tener acceso a los miembros de la clase Array, como, por ejemplo, Length o Rank, o bien deben llamar a una función Visual Basic como, por ejemplo, UBound.
- Desea que el código usado sea más sencillo al no tener que comprobar
Nothing
como caso especial. - El código interactúa con una interfaz de programación de aplicaciones (API) que requiere pasar una matriz de longitud cero a uno o más procedimientos o que devuelve una matriz de longitud cero desde uno o más procedimientos.
No hay comentarios:
Publicar un comentario