Compartilhar via


instrução ReDim (Visual Basic)

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

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

Parts

Term

Definition

Preserve

Optional. Modifier used to preserve the data in the existing array when you change the size of only the last dimension.

name

Required. Name of the array variable. See Nomes de elementos declarados (Visual Basic).

boundlist

Required. Lista de limites de cada dimensão da matriz redefinida.

Comentários

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

O ReDimdedemonstrativo destina-se somente para matrizes. It is not valid on scalars (variables containing only a single value), collections, or structures. Observe que, se você declarar uma variável para ser do tipo Array, o ReDim demonstrativo não tem informações suficientes sobre o tipo para criar a nova matriz.

You can use ReDim only at procedure level. Isso significa que o dedeclaraçãocontexto para uma variável deve ser um procedimentoe não pode ser um arquivo de fonte , namespace, interface, classe, estrutura, móduloou bloco. For more information, see Contextos de declaração e níveis de acesso padrão (Visual Basic).

Rules

  • Modificadores. Você pode especificar somente o Preserve modificador e você não pode omitir o ReDim palavra-chave se você fizer o SO.

  • Diversas variáveis. Você pode redimensionar várias variáveis de matriz na mesma declaração demonstrativo, especificando a name e boundlist peças para cada um. Multiple variables are separated by commas.

  • Limites de matriz. Cada entrada em boundlist pode especificar os limites inferior e superior da dimensão. The lower bound is always zero, whether you specify it or not. Superior limite é o maior valor possível para que subscrito, não o comprimento da dimensão (que é superior limite mais um). Cada subscrito pode variar de zero por meio de seu valor superior limite .

    O número de dimensões na boundlist deve coincidir com o classificar de original da matriz.

  • Matrizes vazias. É possível usar -1 para declarar superior limite de uma dimensão de matriz. Isso significa que o array está vazio, mas não Nada (Visual Basic). For more information, see Matrizes no Visual Basic. However, Visual Basic code cannot successfully access such an array. Se você tentar fazer isso, um IndexOutOfRangeException erro ocorrer durante a execução.

  • Tipos de dados. O ReDimdedemonstrativo não é possível alterar o tipo de dados de uma variável de matriz ou de seus elementos.

  • Inicialização. O ReDimdedemonstrativo não pode fornecer novos valores de inicialização para os elementos da matriz.

  • Classificação. O ReDimdedemonstrativo não é possível alterar a classificar (o número de dimensões) da matriz.

  • Redimensionamento com preservar. Se você usar Preserve, você pode redimensionar a última dimensão da matriz, e para todas as outras dimensões, você deve especificar mesmo limite já possui na matriz existente.

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

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

Behavior

  • Matriz de substituição. ReDim libera a matriz existente e cria uma nova matriz com a mesma classificar. O novo array substitui a matriz lançada na variávelde matriz.

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

  • Inicialização com preservar. Se você especificar o Preserve o modificador Visual Basic cópias 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 os dados existentes na matriz e, em seguida, diminui o tamanho da perda parcial de dados. Finalmente, diminui o tamanho de volta para seu valor original e reinicializa os elementos de 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)

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

A segunda ReDim cria outro novo array, copiando todos os elementos a que ajuste. Entretanto, as cinco colunas são perdidas do final de cada linha de cada camada. Isso não é um problema se você tiver terminado de usar essas colunas. Reduzindo o tamanho de um grande array pode liberar memória que você não precisa mais.

A terceira ReDim cria ainda outro novo array, removendo outro cinco colunas do final de cada linha de cada camada. Desta vez ela não copia os elementos existentes. Isso reverterá a matriz ao seu tamanho original e retorna todos os seus elementos valor padrãooriginal.

Consulte também

Referência

Declaração Const (Visual Basic)

Instrução Dim (Visual Basic)

Apagar declaração (Visual Basic)

Nada (Visual Basic)

IndexOutOfRangeException

Conceitos

Matrizes no Visual Basic