ReDim — Instrukcja (Visual Basic)
Przydziela miejsce do magazynowania dla zmiennej tablicy.
Składnia
ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]
generatora
Termin | Definicja |
---|---|
Preserve |
Opcjonalny. Modyfikator używany do zachowywania danych w istniejącej tablicy podczas zmiany rozmiaru tylko ostatniego wymiaru. |
name |
Wymagany. Nazwa zmiennej tablicy. Zobacz Nazwy zadeklarowanych elementów. |
boundlist |
Wymagany. Lista granic każdego wymiaru ponownie zdefiniowanej tablicy. |
Uwagi
Możesz użyć instrukcji ReDim
, aby zmienić rozmiar co najmniej jednego wymiaru tablicy, która została już zadeklarowana. Jeśli masz dużą tablicę i nie potrzebujesz już niektórych jej elementów, możesz zwolnić pamięć, ReDim
zmniejszając rozmiar tablicy. Z drugiej strony, jeśli tablica potrzebuje więcej elementów, ReDim
może je dodać.
Instrukcja jest przeznaczona ReDim
tylko dla tablic. Nie jest prawidłowa dla skalarnych (zmiennych zawierających tylko jedną wartość), kolekcji lub struktur. Należy pamiętać, że jeśli zadeklarowana zmienna ma być typu , ReDim
instrukcja nie ma wystarczających informacji o typieArray
, aby utworzyć nową tablicę.
Można użyć ReDim
tylko na poziomie procedury. W związku z tym kontekst deklaracji dla zmiennej musi być procedurą; nie może to być plik źródłowy, przestrzeń nazw, interfejs, klasa, struktura, moduł lub blok. Aby uzyskać więcej informacji, zobacz Konteksty deklaracji i Domyślne poziomy dostępu.
Reguły
Wiele zmiennych. Można zmienić rozmiar kilku zmiennych tablicy w tej samej instrukcji deklaracji i określić części
name
iboundlist
dla każdej zmiennej. Wiele zmiennych jest rozdzielonych przecinkami.Granice tablicy. Każdy wpis w
boundlist
pliku może określać dolne i górne granice tego wymiaru. Dolna granica to zawsze 0 (zero). Górna granica to najwyższa możliwa wartość indeksu dla tego wymiaru, a nie długość wymiaru (która jest górną granicą plus jedną). Indeks dla każdego wymiaru może się różnić od 0 do górnej wartości granicy.Liczba wymiarów w
boundlist
obiekcie musi być zgodna z oryginalną liczbą wymiarów (ranga) tablicy.Typy danych. Instrukcja
ReDim
nie może zmienić typu danych zmiennej tablicowej lub jej elementów.Inicjowania. Instrukcja
ReDim
nie może podać nowych wartości inicjowania dla elementów tablicy.Ranga. Instrukcja
ReDim
nie może zmienić rangi (liczby wymiarów) tablicy.Zmiana rozmiaru przy użyciu funkcji Zachowaj. Jeśli używasz metody
Preserve
, możesz zmienić rozmiar tylko ostatniego wymiaru tablicy. Dla każdego innego wymiaru należy określić granicę istniejącej tablicy.Jeśli na przykład tablica ma tylko jeden wymiar, możesz zmienić rozmiar tego wymiaru i zachować całą zawartość tablicy, ponieważ zmieniasz ostatni i jedyny wymiar. Jeśli jednak tablica ma co najmniej dwa wymiary, można zmienić rozmiar tylko ostatniego wymiaru, jeśli używasz elementu
Preserve
.Właściwości. Możesz użyć
ReDim
właściwości, która zawiera tablicę wartości.
Zachowanie
Zastąpienie tablicy.
ReDim
zwalnia istniejącą tablicę i tworzy nową tablicę o tej samej rangi. Nowa tablica zastępuje wydaną tablicę w zmiennej tablicy.Inicjowanie bez zachowania. Jeśli nie określisz
Preserve
parametru ,ReDim
inicjuje elementy nowej tablicy przy użyciu wartości domyślnej dla ich typu danych.Inicjowanie z zachowaniem. Jeśli określisz
Preserve
wartość , program Visual Basic kopiuje elementy z istniejącej tablicy do nowej tablicy.
Przykład
Poniższy przykład zwiększa rozmiar ostatniej tablicy dynamicznej bez utraty żadnych istniejących danych w tablicy, a następnie zmniejsza rozmiar z częściową utratą danych. Na koniec zmniejsza rozmiar z powrotem do oryginalnej wartości i ponownie inicjuje wszystkie elementy tablicy.
Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)
Instrukcja Dim
tworzy nową tablicę z trzema wymiarami. Każdy wymiar jest zadeklarowany z granicą 10, więc indeks tablicy dla każdego wymiaru może wahać się od 0 do 10. W poniższej dyskusji trzy wymiary są określane jako warstwa, wiersz i kolumna.
Pierwszy ReDim
tworzy nową tablicę, która zastępuje istniejącą tablicę w zmiennej intArray
. ReDim
kopiuje wszystkie elementy z istniejącej tablicy do nowej tablicy. Dodaje również 10 kolejnych kolumn na końcu każdego wiersza w każdej warstwie i inicjuje elementy w tych nowych kolumnach do 0 (wartość Integer
domyślna , która jest typem elementu tablicy).
Drugi ReDim
tworzy kolejną nową tablicę i kopiuje wszystkie pasujące elementy. Jednak pięć kolumn jest utraconych z końca każdego wiersza w każdej warstwie. Nie jest to problem, jeśli skończysz używać tych kolumn. Zmniejszenie rozmiaru dużej tablicy może zwolnić pamięć, której już nie potrzebujesz.
Trzeci ReDim
tworzy kolejną nową tablicę i usuwa kolejne pięć kolumn z końca każdego wiersza w każdej warstwie. Tym razem nie kopiuje żadnych istniejących elementów. Ta instrukcja przywraca tablicę do oryginalnego rozmiaru. Ponieważ instrukcja nie zawiera Preserve
modyfikatora, ustawia wszystkie elementy tablicy na ich oryginalne wartości domyślne.
Aby uzyskać dodatkowe przykłady, zobacz Tablice.