Instrução ReDim (Visual Basic)

Realoca espaço de armazenamento para uma variável de matriz.

Sintaxe

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

Partes

Termo Definição
Preserve Opcional. Modificador usado para preservar os dados na matriz existente quando você altera o tamanho apenas da última dimensão.
name Obrigatório. Nome da variável de matriz. Consulte Nomes de elementos declarados.
boundlist Obrigatório. Lista de limites de cada dimensão da matriz redefinida.

Observações

Você pode usar a ReDim instrução para alterar o tamanho de uma ou mais dimensões de uma matriz que já foi declarada. Se você tiver uma matriz grande e não precisar mais de alguns de seus elementos, ReDim pode liberar memória reduzindo o tamanho da matriz. Por outro lado, se a sua matriz precisar de mais elementos, ReDim pode adicioná-los.

A ReDim instrução destina-se apenas a matrizes. Não é válido em escalares (variáveis que contêm apenas um único valor), coleções ou estruturas. Observe que, se você declarar uma variável como sendo do tipo Array, a ReDim instrução não terá informações de tipo suficientes para criar a nova matriz.

Só pode utilizar ReDim ao nível do procedimento. Portanto, o contexto da declaração para a variável deve ser um procedimento; não pode ser um arquivo de origem, um namespace, uma interface, uma classe, uma estrutura, um módulo ou um bloco. Para obter mais informações, consulte Contextos de declaração e níveis de acesso padrão.

Regras

  • Múltiplas variáveis. Você pode redimensionar várias variáveis de matriz na mesma instrução de declaração e especificar as name partes e boundlist para cada variável. Várias variáveis são separadas por vírgulas.

  • Limites da matriz. Cada entrada pode boundlist especificar os limites inferior e superior dessa dimensão. O limite inferior é sempre 0 (zero). O limite superior é o valor de índice mais elevado possível para essa dimensão, não o comprimento da dimensão (que é o limite superior mais um). O índice para cada dimensão pode variar de 0 até o seu valor limite superior.

    O número de dimensões em deve corresponder boundlist ao número original de dimensões (classificação) da matriz.

  • Tipos de dados. A ReDim instrução não pode alterar o tipo de dados de uma variável de matriz ou seus elementos.

  • Inicialização. A ReDim instrução não pode fornecer novos valores de inicialização para os elementos da matriz.

  • Classificação. A ReDim instrução não pode alterar a classificação (o número de dimensões) da matriz.

  • Redimensionamento com Preserve. Se você usar Preserveo , poderá redimensionar apenas a última dimensão da matriz. Para cada outra dimensão, você deve especificar o limite da matriz existente.

    Por exemplo, se a matriz tiver apenas uma dimensão, você poderá redimensioná-la e ainda preservar todo o conteúdo da matriz, porque você está alterando a última e única dimensão. No entanto, se a matriz tiver duas ou mais dimensões, você poderá alterar o tamanho apenas da última dimensão se usar Preserveo .

  • Propriedades. Você pode usar ReDim em uma propriedade que contém uma matriz de valores.

Comportamento

  • Substituição de matrizes. ReDim Libera a matriz existente e cria uma nova matriz com a mesma classificação. A nova matriz substitui a matriz liberada na variável de matriz.

  • Inicialização sem Preserve. Se você não especificar Preserve, ReDim inicializa os elementos da nova matriz usando o valor padrão para seu tipo de dados.

  • Inicialização com Preserve. Se você especificar Preserve, o Visual Basic copiará os elementos da matriz existente para a nova matriz.

Exemplo

O exemplo a seguir aumenta o tamanho da última dimensão de uma matriz dinâmica sem perder nenhum dado existente na matriz e, em seguida, diminui o tamanho com perda parcial de dados. Finalmente, ele diminui o tamanho de volta ao seu valor original e reinicializa todos os elementos da 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)

A Dim instrução cria uma nova matriz com três dimensões. Cada dimensão é declarada com um limite de 10, de modo que o índice de matriz para cada dimensão pode variar de 0 a 10. Na discussão a seguir, as três dimensões são referidas como camada, linha e coluna.

O primeiro ReDim cria uma nova matriz que substitui a matriz existente na variável intArray. ReDim Copia todos os elementos da matriz existente para a nova matriz. Ele também adiciona mais 10 colunas ao final de cada linha em cada camada e inicializa os elementos nessas novas colunas para 0 (o valor padrão de , que é o tipo de Integerelemento da matriz).

O segundo ReDim cria outra nova matriz e copia todos os elementos que se encaixam. No entanto, cinco colunas são perdidas do final de cada linha em cada camada. Isso não é um problema se você tiver terminado de usar essas colunas. Reduzir o tamanho de uma matriz grande pode liberar memória que você não precisa mais.

O terceiro ReDim cria outra nova matriz e remove outras cinco colunas do final de cada linha em cada camada. Desta vez, não copia nenhum elemento existente. Esta instrução reverte a matriz para seu tamanho original. Como a instrução não inclui o Preserve modificador, ela define todos os elementos da matriz para seus valores padrão originais.

Para obter exemplos adicionais, consulte Matrizes.

Consulte também