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 eboundlist
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
Preserve
o , 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
Preserve
o .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 Integer
elemento 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.