Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 é alterado o tamanho apenas da última dimensão. |
name |
Obrigatórios. Nome da variável da matriz. Confira Nomes de elementos declarados. |
boundlist |
Obrigatórios. Lista de limites de cada dimensão da matriz redefinida. |
Comentários
Você pode usar a instrução ReDim para alterar o tamanho de uma ou mais dimensões de uma matriz que já foi declarada. Se tiver uma matriz grande e não precisar mais de alguns de seus elementos, ReDim poderá liberar memória reduzindo o tamanho da matriz. Por outro lado, se sua matriz precisar de mais elementos, ReDim poderá adicioná-los.
A instrução ReDim destina-se apenas para matrizes. Não é válida em escalares (variáveis que contêm apenas um único valor), coleções ou estruturas. Observe que, se declarar uma variável como de tipo Array, a instrução ReDim não terá informações de tipo suficientes para criar a nova matriz.
Você só pode usar ReDim no nível do procedimento. Portanto, o contexto de 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 partes
nameeboundlistpara cada variável. Múltiplas variáveis são separadas por vírgulas.Limites da matriz. Cada entrada em
boundlistpode 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é seu valor de limite superior.O número de dimensões em
boundlistdeve corresponder ao número original de dimensões (classificação) da matriz.Tipos de dados. A instrução
ReDimnão pode alterar o tipo de dados de uma variável de matriz ou seus elementos.Inicialização. A instrução
ReDimnão pode fornecer novos valores de inicialização para os elementos da matriz.Classificar. A instrução
ReDimnão pode alterar a classificação (o número de dimensões) da matriz.Redimensionamento com Preserve. Se você usar
Preserve, poderá redimensionar apenas a última dimensão da matriz. Para todas as outras dimensões, você deve especificar o limite da matriz existente.Por exemplo, se a matriz tiver apenas uma dimensão, você poderá redimensionar essa dimensão e ainda preservar todo o conteúdo da matriz, pois 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.Propriedades. Você pode usar
ReDimem uma propriedade que contém uma matriz de valores.
Comportamento
Substituição de matriz.
ReDimlibera 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,ReDiminicializará os elementos da nova matriz usando o valor padrão para o 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 dados existentes na matriz e, em seguida, diminui o tamanho com perda parcial de dados. Por fim, ele diminui o tamanho de volta para seu valor original e reinicializa todos os elementos da matriz.
Class SampleCollection
' Define a local collection to store strings.
Private items As New List(Of String)
' Define a parameterized property (indexer) for the collection.
Default Public Property Item(ByVal index As Integer) As String
Get
' Return the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
Return items(index)
Else
Return Nothing
End If
End Get
Set(ByVal value As String)
' Set the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
items(index) = value
ElseIf index = items.Count Then
' Allow adding new items at the end.
items.Add(value)
End If
End Set
End Property
' Add a Count property for convenience.
Public ReadOnly Property Count As Integer
Get
Return items.Count
End Get
End Property
' Add method to add items.
Public Sub Add(ByVal item As String)
items.Add(item)
End Sub
End Class
A instrução Dim cria uma nova matriz com três dimensões. Cada dimensão é declarada com um limite de 10, portanto, 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 conhecidas 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. Também adiciona mais 10 colunas ao final de cada linha em cada camada e inicializa os elementos nessas novas colunas com 0 (o valor padrão de Integer, que é o tipo de elemento da matriz).
O segundo ReDim cria outra nova matriz e copia todos os elementos que se ajustam. No entanto, cinco colunas são perdidas do final de cada linha em cada camada. Isso não será um problema se tiver terminado de usar essas colunas. Reduzir o tamanho de uma matriz grande pode liberar memória que não seja mais necessária.
O terceiro ReDim cria outra nova matriz e remove outras cinco colunas do final de cada linha em cada camada. Desta vez, ele não copia nenhum elemento existente. Essa instrução reverte a matriz para seu tamanho original. Como a instrução não inclui o modificador Preserve, ela define todos os elementos de matriz para seus valores padrão originais.
Para obter exemplos adicionais, consulte Matrizes.