Compartilhar via


Instrução ReDim (Visual Basic)

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

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

Partes

Termo

Definição

Preserve

Opcional. Modificador usado para preservar os dados na matriz existente quando você alterar o tamanho de dimensão apenas a última vez.

name

Obrigatório. Nome de variável de matriz. Consulte Nomes de elemento declarados (Visual Basic).

boundlist

Obrigatório. Lista dos limites de cada dimensão de matriz redefinido.

Comentários

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

A declaração de ReDim destina-se somente para matrizes. Não é válido em escalares (variáveis contendo apenas um único valor), em coleções, ou estruturas. Observe que se você declara uma variável para ser do tipo Array, a instrução de ReDim não tem a suficiente informações de tipo para criar a nova matriz.

Você pode usar ReDim somente em nível de procedimento. Como consequência, o contexto da declaração da variável deve ser um procedimento; não pode ser um arquivo fonte, namespace, interface, classe, estrutura, módulo, procedimento ou bloco. Para obter mais informações, consulte Contextos de declaração e níveis de acesso padrão (Visual Basic).

Regras.

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

  • Limites da matriz. Cada entrada em boundlist pode especificar os limites inferior e superior dessa dimensão. O limite inferior é sempre 0 (zero). O limite superior é o valor de índice mais alto possível para a 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 valor de limite superior.

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

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

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

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

  • Redimensionar com preserve. Se você usar Preserve, você pode redimensionar somente à última dimensão da matriz. Para cada dimensão outra, você deve especificar o limite de matriz existente.

    Por exemplo, se seu array tem apenas uma dimensão, você pode redimensionar a dimensão e ainda preservar o conteúdo da matriz, porque você está alterando o último e somente a dimensão. No entanto, se o seu array tem dois ou mais dimensões, você pode alterar o tamanho de dimensão apenas a última se você usar Preserve.

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

Comportamento

  • **Substituição de matriz.**ReDim libera a matriz existente e cria um novo array com a mesma ordem. A nova matriz liberada substitui a matriz na variável de matriz.

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

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

Exemplo

O exemplo aumentar o tamanho da última dimensão de uma matriz dinâmica sem perder os dados existentes na matriz, e reduz o tamanho com perda de dados parcial. Finalmente, diminui o tamanho de volta para o 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 declaração de Dim cria um novo array com três dimensões. Cada dimensão é declarada com um limite de 10, então o índice de matriz para cada dimensão pode variar de 0 a 10. Na discussão, as três dimensões são chamadas da camada, linha, e a coluna.

Primeiro ReDim cria uma nova matriz que substitui a matriz existente em intArrayvariável. ReDim copia todos os elementos da matriz existente na nova matriz. Ele também adiciona 10 mais colunas ao final de cada linha em cada camada e inicializa todos os elementos nessas novas linhas em 0 (o valor padrão de Integer, que é o tipo da matriz).

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

Terceiro ReDim cria outra nova matriz e remove outras cinco colunas do final de cada linha em cada nível. Desta vez não copiar elementos existentes. Essa instrução retorna a matriz ao seu tamanho original. Porque a declaração não inclui o modificador de Preserve , defina todos os elementos da matriz para seus valores padrão originais.

Para exemplos adicionais, consulte Matrizes no Visual Basic.

Consulte também

Referência

Instrução Const (Visual Basic)

Instrução Dim (Visual Basic)

Instrução Erase (Visual Basic)

Nada (Visual Basic)

IndexOutOfRangeException

Outros recursos

Matrizes no Visual Basic