Instrucción ReDim (Visual Basic)

Reasigna espacio de almacenamiento a una variable de matriz.

ReDim [ Preserve ] name(boundlist) [ ,  name(boundlist) [, ... ] ]

Elementos

Término

Definición

Preserve

Opcional.Modificador utilizado para conservar los datos en la matriz existente cuando sólo se cambia el tamaño de la última dimensión.

name

Requerido.Nombre de la variable de matriz.Vea Nombres de elementos declarados (Visual Basic).

boundlist

Requerido.Lista de límites de cada dimensión de la matriz nuevamente definida.

Comentarios

Puede utilizar la instrucción ReDim para cambiar el tamaño de una o más dimensiones de una matriz que ya se ha declarado.Si dispone de una matriz grande y ya no necesita algunos de sus elementos, ReDim puede reducir el tamaño de la matriz para liberar memoria.Por otra parte, si la matriz necesita más elementos, ReDim puede agregarlos.

La instrucción ReDim se ha diseñado únicamente para matrices.No es válido en los escalares (variables que contienen sólo un valor único), las colecciones, o estructuras.Observe que si declara una variable para que sea Array escrita, la instrucción de ReDim no tiene suficiente información de tipo para crear la nueva matriz.

Sólo puede utilizar ReDim en el nivel de clase en el nivel de procedimiento.Por consiguiente, el contexto de declaración de la variable debe ser un procedimiento; no puede ser un archivo de código fuente, un espacio de nombres, una interfaz, clase, una estructura, un módulo, o un bloque.Para obtener más información, vea Contextos de declaración y niveles de acceso predeterminados (Visual Basic).

Reglas

  • Varias variables. Puede cambiar el tamaño de varias variables de matriz en la misma instrucción de declaración y especificar las partes de name y de boundlist para cada variable.Las variables múltiples se separan con comas.

  • Límites de matrices. Cada entrada en boundlist puede especificar los límites inferior y superior de la dimensión.El límite inferior siempre es 0 (cero).El límite superior es el valor de índice más alto posible para esa dimensión, no la longitud de la dimensión (que es el límite superior más uno).El índice para cada dimensión puede variar desde 0 hasta el valor de límite superior.

    El número de dimensiones de boundlist debe coincidir con el número original de dimensiones (fila) de la matriz.

  • Tipos de datos. La instrucción de ReDim no puede cambiar el tipo de datos de una variable de matriz o de sus elementos.

  • Inicialización. La instrucción ReDim no puede proporcionar nuevos valores de inicialización para los elementos de matriz.

  • Rango. La instrucción ReDim no puede cambiar el rango (número de dimensiones) de la matriz.

  • Cambiar el tamaño con Preserve. Si utiliza Preserve, puede cambiar el tamaño sólo la dimensión última de la matriz.Para cada otra dimensión, debe especificar el límite de matriz existente.

    Por ejemplo, si su matriz tiene sólo una dimensión, puede cambiar el tamaño de dicha dimensión y conservar el contenido de la matriz, ya que es la última dimensión y la única.Sin embargo, si su matriz tiene dos o más dimensiones, sólo puede cambiar el tamaño de la última dimensión si utiliza Preserve.

  • Propiedades. Se puede utilizar ReDim en una propiedad que contiene una matriz de valores.

Comportamiento

  • **Reemplazo de matriz.**ReDim libera la matriz existente y crea una matriz nueva con el mismo rango.La nueva matriz reemplaza la matriz liberada en la variable de matriz.

  • Inicialización sin Preserve. Si no especifica Preserve, ReDim inicializa nuevos elementos de matriz utilizando el valor predeterminado para su tipo de datos.

  • Inicialización con Preserve. Si especifica Preserve, Visual Basic copia los elementos de la matriz existente en el nuevo matriz.

Ejemplo

El ejemplo siguiente aumenta el tamaño de la última dimensión de una matriz dinámica sin perder los datos existentes en la matriz y, a continuación, reduce el tamaño con una pérdida parcial de datos.Por último, reduce el tamaño a su valor original y reinicializa todos los elementos de la matriz.

Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)

La instrucción de Dim crea una nueva matriz con tres dimensiones.Cada dimensión está declarada con un límite de 10, por lo que el índice de matriz para cada dimensión puede extenderse comprendidos entre 0 y 10.En la siguiente descripción, las tres dimensiones se conocen como nivel, la fila, y columna.

La primera instrucción ReDim crea una nueva matriz que reemplaza la matriz existente en la variable intArray.ReDim copia todos los objetos de la matriz existente en la nueva matriz.También agrega 10 más columnas al final de cada fila en cada nivel e inicializa los elementos en estas nuevas columnas a 0 (el valor predeterminado de Integer, que es el tipo de elemento de matriz).

Segundo ReDim crea otro nueva matriz y copia todos los elementos que caben.Sin embargo, se pierden cinco columnas desde el final de cada fila en cada capa.Esto no es un problema si ha terminado de utilizar estas columnas.Si se reduce el tamaño de una matriz de gran tamaño, puede liberar memoria que ya no necesite.

Tercer ReDim crea otro nueva matriz y quita otras cinco columnas del final de cada fila en cada nivel.Esta vez no copia ningún elemento existente.Esta instrucción revierte la matriz a su tamaño original.Dado que la instrucción no incluye el modificador de Preserve, establece todos los elementos de matriz a sus valores predeterminados originales.

Para obtener otros ejemplos, vea Matrices en Visual Basic.

Vea también

Referencia

Instrucción Const (Visual Basic)

Instrucción Dim (Visual Basic)

Erase (Instrucción, Visual Basic)

Nothing (Visual Basic)

IndexOutOfRangeException

Otros recursos

Matrices en Visual Basic