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 Erase (Visual Basic)