Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Relokuje prostor úložiště pro proměnnou pole.
Syntaxe
ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]
Součástky
| Pojem | definice |
|---|---|
Preserve |
Nepovinné. Modifikátor použitý k zachování dat v existujícím poli při změně velikosti pouze poslední dimenze. |
name |
Povinný: Název proměnné pole. Viz Deklarované názvy elementů. |
boundlist |
Povinný: Seznam hranic každé dimenze předdefinovaného pole |
Poznámky
Pomocí příkazu můžete ReDim změnit velikost jedné nebo více dimenzí pole, která již byla deklarována. Pokud máte velké pole a některé jeho prvky už nepotřebujete, ReDim můžete uvolnit paměť zmenšením velikosti pole. Na druhou stranu, pokud pole potřebuje více prvků, ReDim můžete je přidat.
Příkaz ReDim je určen pouze pro pole. Není platný pro skaláry (proměnné, které obsahují pouze jednu hodnotu), kolekce nebo struktury. Všimněte si, že pokud deklarujete proměnnou typu Array, ReDim příkaz nemá dostatek informací o typu pro vytvoření nového pole.
Můžete použít ReDim pouze na úrovni procedury. Proto musí být kontext deklarace proměnné procedurou; nemůže to být zdrojový soubor, obor názvů, rozhraní, třída, struktura, modul nebo blok. Další informace naleznete v tématu Kontexty deklarace a výchozí úrovně přístupu.
Pravidla
Více proměnných Ve stejném příkazu deklarace můžete změnit velikost několika proměnných pole a zadat jednotlivé
nameproměnné aboundlistjejich části. Více proměnných je odděleno čárkami.Hranice pole. Každá položka
boundlistmůže určovat dolní a horní mez dané dimenze. Dolní mez je vždy 0 (nula). Horní mez je nejvyšší možná indexová hodnota pro danou dimenzi, nikoli délka dimenze (což je horní mez plus jedna). Index pro každou dimenzi se může lišit od 0 do horní vázané hodnoty.Počet dimenzí musí
boundlistodpovídat původnímu počtu dimenzí (pořadí) pole.Datové typy. Příkaz
ReDimnemůže změnit datový typ proměnné pole nebo jeho prvků.Inicializace. Příkaz
ReDimnemůže poskytnout nové inicializační hodnoty pro prvky pole.Hodnost. Příkaz
ReDimnemůže změnit pořadí (počet dimenzí) pole.Změna velikosti pomocí funkce Zachovat Pokud použijete
Preserve, můžete změnit velikost pouze poslední dimenze pole. Pro každou druhou dimenzi je nutné zadat hranici existujícího pole.Pokud má například pole pouze jednu dimenzi, můžete změnit velikost této dimenze a zachovat veškerý obsah pole, protože měníte poslední a jedinou dimenzi. Pokud má však pole dvě nebo více dimenzí, můžete změnit velikost pouze poslední dimenze, pokud použijete
Preserve.Vlastnosti. Můžete použít
ReDimu vlastnosti, která obsahuje pole hodnot.
Chování
Nahrazení pole.
ReDimuvolní existující pole a vytvoří novou matici se stejným pořadím. Nové pole nahradí uvolněnou matici v proměnné pole.Inicializace bez zachování Pokud nezadáte
Preserve,ReDiminicializuje prvky nového pole pomocí výchozí hodnoty pro jejich datový typ.Inicializace se zachováním Pokud zadáte
Preserve, Visual Basic zkopíruje prvky z existujícího pole do nového pole.
Příklad
Následující příklad zvětší velikost poslední dimenze dynamického pole bez ztráty existujících dat v poli a pak zmenší velikost s částečnou ztrátou dat. Nakonec zmenší velikost zpět na původní hodnotu a znovu inicializuje všechny prvky pole.
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
Příkaz Dim vytvoří nové pole se třemi dimenzemi. Každá dimenze je deklarována s hranicí 10, takže index matice pro každou dimenzi může být v rozsahu od 0 do 10. V následující diskuzi jsou tři dimenze označovány jako vrstva, řádek a sloupec.
První ReDim vytvoří novou matici, která nahradí existující pole v proměnné intArray.
ReDim zkopíruje všechny prvky z existujícího pole do nového pole. Přidá také 10 dalších sloupců na konec každého řádku v každé vrstvě a inicializuje prvky v těchto nových sloupcích na 0 (výchozí hodnota Integer, což je typ prvku pole).
Druhý ReDim vytvoří další nové pole a zkopíruje všechny prvky, které se vejdou. Z konce každého řádku v každé vrstvě se však ztratí pět sloupců. To není problém, pokud jste dokončili používání těchto sloupců. Zmenšení velikosti velkého pole může uvolnit paměť, kterou už nepotřebujete.
Třetí ReDim vytvoří další nové pole a odebere dalších pět sloupců na konci každého řádku v každé vrstvě. Tentokrát nekopíruje žádné existující prvky. Tento příkaz vrátí pole k původní velikosti. Protože příkaz neobsahuje Preserve modifikátor, nastaví všechny prvky pole na původní výchozí hodnoty.
Další příklady najdete v tématu Pole.