miércoles, 4 de enero de 2017

Tamaño de la matriz

Tamaño de la matriz

El tamaño de una matriz es el producto de las longitudes de todas sus dimensiones. Representa el número total de elementos contenidos actualmente en la matriz.
En el ejemplo siguiente se declara una matriz tridimensional.
Dim prices(3, 4, 5) As Long  

El tamaño total de la matriz en la variable prices es (3 + 1) x (4 + 1) x (5 + 1) = 120.
Puede encontrar el tamaño de una matriz mediante la propiedad Length. Puede averiguar la longitud de cada dimensión de una matriz multidimensional utilizando el método GetLength.
Puede cambiar el tamaño de una variable de matriz asignando un nuevo objeto de matriz o usando la instrucción ReDim.
Hay varios aspectos que se deben tener en cuenta cuando se trabaja con el tamaño de una matriz.
Longitud de la dimensiónEl índice de cada dimensión es de base 0, lo que significa que va desde 0 hasta su límite máximo. Por lo tanto, la longitud de una dimensión determinada supera en 1 el límite máximo declarado para esa dimensión.
Límites de longitudLa longitud de cada dimensión de una matriz se limita al valor máximo del tipo de datos Integer, que es (2 ^ 31) - 1. Sin embargo, el tamaño total de una matriz también está limitado por la memoria disponible en el sistema. Si se intenta inicializar una matriz que supera la cantidad de memoria RAM disponible, Common Language Runtime produce una excepción OutOfMemoryException.
Tamaño y tamaño de elementoEl tamaño de la matriz es independiente del tipo de datos de sus elementos. El tamaño siempre representa el número total de elementos, no el número de bytes que se usan en el almacenamiento.
Consumo de memoriaNo es seguro dar nada por supuesto en lo que respecta al modo de almacenar una matriz en la memoria. El almacenamiento varía en función de las plataformas de diferentes anchos de datos, por lo que la misma matriz puede utilizar más memoria en un sistema de 64 bits que en un sistema de 32 bits. Según la configuración del sistema cuando inicializa una matriz, Common Language Runtime (CLR) puede asignar el almacenamiento para empaquetar los elementos tan juntos como sea posible o para alinearlos todos en los límites naturales del hardware. Asimismo, una matriz requiere una sobrecarga de almacenamiento para obtener su información de control y esta sobrecarga aumenta con cada dimensión agregada.

Tipos de matriz y otros tipos

Cada matriz tiene un tipo de datos, pero difiere del tipo de datos de sus elementos. No existe ningún tipo de datos para todas las matrices. En su lugar, el tipo de datos de una matriz lo determina el número de dimensiones, o rango, de la matriz y el tipo de datos de los elementos de la matriz. Se considera que dos variables de matriz son del mismo tipo de datos solo cuando tienen el mismo rango y sus elementos tienen el mismo tipo de datos. Las longitudes de las dimensiones de una matriz no influyen en el tipo de datos de la matriz.
Cada matriz hereda la clase System.Array y puede declarar una variable del tipo Array, pero no puede crear una matriz del tipo Array. Además, ReDim (Instrucción) no puede funcionar en una variable declarada de tipo Array. Por estas razones y por seguridad de tipos, es aconsejable declarar cada matriz como un tipo específico, como Integer en el ejemplo anterior.
Puede averiguar el tipo de datos de una matriz o de sus elementos de varias maneras.
  • Puede llamar al método Object.GetType en la variable para recibir un objeto Type para el tipo en tiempo de ejecución de la variable. El objeto Type contiene amplia información en sus propiedades y métodos.
  • Puede pasar la variable a la función TypeName para recibir un String que contiene el nombre de tipo en tiempo de ejecución.
  • Puede pasar la variable a la función VarType para recibir un valor VariantType valor que representa la clasificación del tipo de la variable.
En el ejemplo siguiente se llama a la función TypeName para determinar el tipo de la matriz y el tipo de elementos de la matriz. El tipo de matriz es Integer(,) y los elementos de la matriz son del tipo Integer.
        Dim thisTwoDimArray(,) As Integer = New Integer(9, 9) {}
        MsgBox("Type of thisTwoDimArray is " & TypeName(thisTwoDimArray))
        MsgBox("Type of thisTwoDimArray(0, 0) is " & TypeName(thisTwoDimArray(0, 0)))

No hay comentarios: