Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De opslagruimte voor een matrixvariabele opnieuw verplaatsen.
Syntaxis
ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]
generator
| Term | Definitie |
|---|---|
Preserve |
Optioneel. Wijziging die wordt gebruikt om de gegevens in de bestaande matrix te behouden wanneer u de grootte van alleen de laatste dimensie wijzigt. |
name |
Vereist. Naam van de matrixvariabele. Zie Gedeclareerde elementnamen. |
boundlist |
Vereist. Lijst met grenzen van elke dimensie van de opnieuw gedefinieerde matrix. |
Opmerkingen
U kunt de ReDim instructie gebruiken om de grootte van een of meer dimensies van een matrix te wijzigen die al is gedeclareerd. Als u een grote matrix hebt en sommige elementen niet meer nodig hebt, ReDim kunt u geheugen vrijmaken door de matrixgrootte te verkleinen. Als uw matrix echter meer elementen nodig heeft, ReDim kunt u deze toevoegen.
De ReDim instructie is alleen bedoeld voor matrices. Het is niet geldig voor scalaire waarden (variabelen die slechts één waarde bevatten), verzamelingen of structuren. Als u een variabele van het type Arraydeclareert, beschikt de ReDim instructie niet over voldoende typegegevens om de nieuwe matrix te maken.
U kunt alleen op procedureniveau gebruiken ReDim . Daarom moet de declaratiecontext voor de variabele een procedure zijn; het kan geen bronbestand, een naamruimte, een interface, een klasse, een structuur, een module of een blok zijn. Zie Declaratiecontexten en standaardtoegangsniveaus voor meer informatie.
Regels
Meerdere variabelen. U kunt het formaat van verschillende matrixvariabelen wijzigen in dezelfde declaratie-instructie en de
nameonderdelenboundlistvoor elke variabele opgeven. Meerdere variabelen worden gescheiden door komma's.Matrixgrenzen. Elke vermelding kan
boundlistde onder- en bovengrenzen van die dimensie opgeven. De ondergrens is altijd 0 (nul). De bovengrens is de hoogst mogelijke indexwaarde voor die dimensie, niet de lengte van de dimensie (de bovengrens plus één). De index voor elke dimensie kan variëren van 0 tot de bovengrenswaarde.Het aantal dimensies moet
boundlistovereenkomen met het oorspronkelijke aantal dimensies (rang) van de matrix.Gegevenstypen. De
ReDiminstructie kan het gegevenstype van een matrixvariabele of de bijbehorende elementen niet wijzigen.Initialisatie. De
ReDiminstructie kan geen nieuwe initialisatiewaarden opgeven voor de matrixelementen.Rang. De
ReDiminstructie kan de rang (het aantal dimensies) van de matrix niet wijzigen.Formaat wijzigen met Behouden. Als u dit gebruikt
Preserve, kunt u alleen de laatste dimensie van de matrix wijzigen. Voor elke andere dimensie moet u de afhankelijkheid van de bestaande matrix opgeven.Als uw matrix bijvoorbeeld slechts één dimensie heeft, kunt u de grootte van die dimensie wijzigen en nog steeds alle inhoud van de matrix behouden, omdat u de laatste en enige dimensie wijzigt. Als uw matrix echter twee of meer dimensies heeft, kunt u de grootte van alleen de laatste dimensie wijzigen als u gebruikt
Preserve.Eigenschappen. U kunt een eigenschap gebruiken
ReDimdie een matrix met waarden bevat.
Gedrag
Vervanging van matrix.
ReDimgeeft de bestaande matrix vrij en maakt een nieuwe matrix met dezelfde rangschikking. De nieuwe matrix vervangt de vrijgegeven matrix in de matrixvariabele.Initialisatie zonder behouden. Als u niet opgeeft
Preserve,ReDiminitialiseert u de elementen van de nieuwe matrix met behulp van de standaardwaarde voor het gegevenstype.Initialisatie met Behouden. Als u opgeeft
Preserve, kopieert Visual Basic de elementen van de bestaande matrix naar de nieuwe matrix.
Opmerking
In het volgende voorbeeld wordt de grootte van de laatste dimensie van een dynamische matrix vergroot zonder dat bestaande gegevens in de matrix verloren gaan en wordt vervolgens de grootte met gedeeltelijk gegevensverlies verkleind. Ten slotte wordt de grootte teruggenomen naar de oorspronkelijke waarde en worden alle matrixelementen opnieuw geïnitialiseerd.
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
De Dim instructie maakt een nieuwe matrix met drie dimensies. Elke dimensie wordt gedeclareerd met een grens van 10, zodat de matrixindex voor elke dimensie kan variëren van 0 tot en met 10. In de volgende discussie worden de drie dimensies aangeduid als laag, rij en kolom.
De eerste ReDim maakt een nieuwe matrix die de bestaande matrix in een variabele intArrayvervangt.
ReDim kopieert alle elementen van de bestaande matrix naar de nieuwe matrix. Daarnaast worden er 10 kolommen toegevoegd aan het einde van elke rij in elke laag en worden de elementen in deze nieuwe kolommen geïnitialiseerd tot 0 (de standaardwaarde van Integer, het elementtype van de matrix).
De tweede ReDim maakt nog een nieuwe matrix en kopieert alle elementen die passen. Vijf kolommen gaan echter verloren vanaf het einde van elke rij in elke laag. Dit is geen probleem als u klaar bent met het gebruik van deze kolommen. Het verkleinen van een grote matrix kan geheugen vrijmaken die u niet meer nodig hebt.
De derde ReDim maakt nog een nieuwe matrix en verwijdert nog eens vijf kolommen aan het einde van elke rij in elke laag. Deze keer worden er geen bestaande elementen gekopieerd. Met deze instructie wordt de matrix teruggezet naar de oorspronkelijke grootte. Omdat de instructie de wijzigingsfunctie niet bevat Preserve , worden alle matrixelementen ingesteld op de oorspronkelijke standaardwaarden.
Zie Matrices voor meer voorbeelden.