Udostępnij za pośrednictwem


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 i boundlist 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 Preserveparametru , ReDim inicjuje elementy nowej tablicy przy użyciu wartości domyślnej dla ich typu danych.

  • Inicjowanie z zachowaniem. Jeśli określisz Preservewartość , 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ść Integerdomyś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.

Zobacz też