Sdílet prostřednictvím


ReDim – příkaz (Visual Basic)

Reallocates úložný prostor pro proměnnou pole.

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

Části

Termín

Definice

Preserve

Nepovinné.Modifikátor umožňuje zachovat data v existující pole, změníte-li velikost pouze poslední dimenze.

name

Povinné.Název proměnné pole.Viz téma Deklarované názvy elementu (Visual Basic).

boundlist

Povinné.Seznam mezí jednotlivých rozměrů pole Předefinovaná.

Poznámky

Můžete použít ReDim příkaz změnit velikost jednoho nebo více rozměrů matice, která již byla deklarována.Pokud máte velkou řadu a již nepotřebujete některých prvků, ReDim můžete uvolnit paměť snížením velikosti pole.Na druhé straně, pokud vaše pole potřebuje více prvků ReDim je přidat.

ReDim Příkaz je určen pouze pro pole.Není platný pro operace Scalar (proměnné, které obsahují pouze jednu hodnotu), kolekce nebo struktury.Všimněte si, že je-li deklarovat proměnnou typu Array, ReDim prohlášení nemá dostatečné informace o typu, chcete-li vytvořit nové pole.

Můžete použít ReDim pouze na úrovni procedury.Proto kontextu deklarace proměnné musí být postup; nemůže být zdrojový soubor, obor názvů, rozhraní, třídu, strukturu, modulu nebo bloku.Další informace naleznete v tématu Kontexty deklarace a výchozí úrovně přístupu (Visual Basic).

Pravidla

  • Více proměnných. Můžete změnit velikost několika proměnných v příkazu stejné prohlášení a určit, name a boundlist částí pro každou proměnnou.Více proměnných jsou odděleny čárkami.

  • Meze pole. Každá položka v boundlist lze určit dolní a horní hranicí této dimenze.Vždy je dolní mez 0 (nula).Horní mez je nejvyšší hodnota možné indexu pro danou dimenzi není délka dimenze (což je horní mez plus jedna).Index pro každou dimenzi, se může lišit od 0 do jeho hodnotu horní mez.

    Počet dimenzí v boundlist se musí shodovat s původní počet rozměrů pole (pořadí).

  • **Datové typy.**ReDim Výkazu nelze změnit datový typ proměnnou pole nebo jeho prvků.

  • **Inicializace.**ReDim Prohlášení nemůže poskytnout nové inicializace hodnoty pro prvky pole.

  • **Pořadí.**ReDim Výkazu nelze změnit pořadí (počet rozměrů) pole.

  • Změna velikosti s zachovat. Použijete-li Preserve, můžete změnit velikost pouze poslední dimenze matice.Pro každou dimenzi, je nutné zadat vazbou existující pole.

    Například pokud své pole má pouze jednu dimenzi, můžete změnit velikost dané dimenze a stále zachovat obsah pole, protože měníte naposledy a pouze dimenze.Však pokud své pole má dvě nebo více dimenzí, můžete změnit velikost pouze poslední dimenze použijete-li Preserve.

  • Vlastnosti. Můžete použít ReDim na vlastnost, která obsahuje pole hodnot.

Chování

  • **Array náhradní.**ReDim uvolní existující pole a vytvoří nové pole s stejné pořadí. Nové pole nahradí pole vydané v proměnné pole.

  • Inicializace bez zachovat. Nezadáte-li Preserve, ReDim inicializuje prvky nové pole pomocí výchozí hodnotu pro jejich datového typu.

  • Inicializace se zachovat. Zadáte-li Preserve, Visual Basic zkopíruje prvky ze stávajícího pole nové pole.

Příklad

V následujícím příkladu se zvětší velikost poslední dimenze dynamického pole bez ztráty všechna existující data v poli a pak zmenší velikost ztráty částečná data.Nakonec se zmenší velikost zpět na původní hodnotu a nové inicializaci všech prvků pole.

Dim intArray(10, 10, 10) As Integer 
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)

Dim Vytvoří nové pole s třech rozměrech.Každou dimenzi je deklarována s vazbou na 10, takže index pole pro každou dimenzi může být v rozsahu od 0 do 10.V následující diskusi tři dimenze jsou označovány jako vrstva, řádků a sloupců.

První ReDim vytvoří nové pole, která nahradí existující pole v proměnné intArray.ReDimzkopíruje všechny prvky ze stávajícího pole do nového pole.Také přidá na konec každého řádku ve všech vrstvách 10 více sloupců a inicializuje prvky v těchto nových sloupců na hodnotu 0 (výchozí hodnota Integer, což je typ prvku matice).

Druhý ReDim vytvoří další nové pole a zkopíruje všechny prvky, které vyhovují.Pět sloupců jsou však ztraceny od konce každého řádku ve všech vrstvách.To není problém, pokud dokončíte používání těchto sloupců.Zmenšení velikosti velkou řadu můžete uvolnit paměť, která již nepotřebujete.

Třetí ReDim vytvoří další nové pole a odebere jiné pět sloupců na konec každého řádku ve všech vrstvách.Tentokrát jej nekopíruje jakékoli existující prvky.Tento příkaz vrátí pole jeho původní velikosti.Protože neobsahuje příkaz Preserve modifikátor, nastaví všechny prvky pole na původní výchozí hodnoty.

Další příklady naleznete v tématu Pole v jazyce Visual Basic.

Viz také

Referenční dokumentace

Const – příkaz (Visual Basic)

Dim – příkaz (Visual Basic)

Erase – příkaz (Visual Basic)

Nothing (Visual Basic)

IndexOutOfRangeException

Další zdroje

Pole v jazyce Visual Basic