Freigeben über


ReDim-Anweisung (Visual Basic)

Reserviert Speicherplatz für eine Arrayvariable neu.

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

Teile

Begriff

Definition

Preserve

Dies ist optional.Modifizierer zum Beibehalten der Daten im vorhandenen Array, wenn nur die Größe der letzten Dimension geändert wird.

name

Erforderlich.Name der Arrayvariablen.Siehe Namen deklarierter Elemente (Visual Basic).

boundlist

Erforderlich.Liste der Grenzen jeder Dimension des neu definierten Arrays.

Hinweise

Mit der ReDim-Anweisung können Sie die Größe einer oder mehrerer Dimensionen eines Arrays ändern, das bereits deklariert wurde.Wenn es sich um ein umfangreiches Array handelt und Sie einige seiner Elemente nicht mehr benötigen, kann mit ReDim durch Verringern der Arraygröße Speicher freigegeben werden.Wenn das Array mehr Elemente benötigt, kann sie ReDim hinzufügen.

Die ReDim-Anweisung ist nur für Arrays vorgesehen.Es ist auf Skalaren (Variablen, die nur einen einzelnen Wert enthalten), Auflistungen oder Strukturen ungültig.Beachten Sie, dass, wenn Sie eine Variable deklarieren, die dem Typ Array zu sein, die ReDim-Anweisung nicht die erforderlichen Typinformationen, um den neuen Arrays zu erstellen.

ReDim kann nur auf Prozedurebene verwendet werden.Daher muss der Deklarationskontext für die Variable eine - Prozedur sein; Es kann keine Quelldatei, ein Namespace, eine Schnittstelle, eine Klasse, Struktur, ein Modul oder ein Block liegen.Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen (Visual Basic).

Regeln

  • Mehrere Variablen. Sie können mehrere Arrayvariablen in derselben Deklarationsanweisung Größe ändern und die name und boundlist Teile für jede Variable angeben.Mehrere Variablen werden durch Komma voneinander getrennt.

  • Arraygrenzen. Jeder Eintrag in boundlist kann die Unter- und Obergrenze der betreffenden Dimension angeben.Die Untergrenze ist immer 0.Die Obergrenze ist der höchstmögliche Indexwert für diese Dimension, nicht die Länge von der Dimension (die die Obergrenze plus eine ist).Der Index für jede Dimension kann von 0 durch seinen Obergrenzenwert variieren.

    Die Anzahl der Dimensionen in boundlist muss die ursprüngliche Rang (Anzahl der Dimensionen) des Arrays übereinstimmen.

  • Datentypen. Die ReDim-Anweisung kann den Datentyp einer Arrayvariablen oder seiner Elemente nicht ändern.

  • Initialisierung. Die ReDim-Anweisung kann keine neuen Initialisierungswerte für die Arrayelemente bereitstellen.

  • Rang. Mit der ReDim-Anweisung kann der Rang (die Anzahl der Dimensionen) des Arrays nicht geändert werden.

  • Ändern der Größe mit Preserve. Wenn Sie Preserve verwenden, können Sie nur die letzte Dimension des Arrays Größe ändern.Für jede andere Dimension müssen Sie die Begrenzung des vorhandenen Arrays.

    Wenn das Array z. B. nur eine Dimension hat, können Sie die Größe dieser Dimension ändern und dennoch den Inhalt des Arrays beibehalten. Dies ist möglich, da Sie die letzte und einzige Dimension ändern.Hat das Array jedoch zwei oder mehr Dimensionen, können Sie mit Preserve lediglich die Größe der letzten Dimension ändern.

  • Eigenschaften. Sie können ReDim für eine Eigenschaft verwenden, die ein Wertearray aufweist.

Verhalten

  • **Arrayersetzung.**ReDim gibt das vorhandene Array frei und erstellt ein neues Array mit demselben Rang.Das neue Array ersetzt das freigegebene Array in der Arrayvariablen.

  • Initialisierung ohne Preserve. Wenn Sie nicht Preserve angeben, initialisiert ReDim die neuen Arrays, indem Sie den Standardwert für ihren Datentyp verwendet.

  • Initialisierung mit Preserve. Wenn Sie Preserve angeben, kopiert Visual Basic die Elemente aus dem vorhandenen Array an den neuen Array.

Beispiel

Im folgenden Beispiel wird die letzte Dimension eines dynamischen Arrays vergrößert, ohne dass Daten im vorhandenen Array verloren gehen. Anschließend wird es mit partiellem Datenverlust verkleinert.Schließlich wird die Größe auf den ursprünglichen Wert verringert, und alle Arrayelemente werden neu initialisiert.

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

Die Dim-Anweisung erstellt ein neues Array mit drei Dimensionen.Jede Dimension wird mit einer Tiefe von 10 deklariert, sodass der Arrayindex für jede Dimension der Fensterbereich von 0 bis 10.In der folgenden Erläuterung bezeichnet die drei Dimensionen als Ebene, Zeile und Spalte.

Mit dem ersten ReDim wird ein neues Array erstellt, das das vorhandene Array in der Variablen intArray ersetzt.Mit ReDim werden alle Elemente aus dem vorhandenen Array in das neue Array kopiert.Sie fügt auch 10 weitere Spalten am Ende jeder Zeile in jeder Ebene hinzu und initialisiert die Elemente in diesen neuen Spalten bis 0 (der Standardwert Integer, der der Elementtyp des Arrays ist).

Zweite ReDim erstellt ein weiteres neues Array und kopiert alle Elemente, die angepasst.Auf jeder Ebene gehen jedoch 5 Spalten an Ende jeder Zeile verloren.Dies ist kein Problem, wenn Sie diese Spalten nicht mehr benötigen.Es kann sehr hilfreich sein, ein großes Array zu verkleinern, um wertvollen Speicher, der nicht mehr benötigt wird, freizugeben.

Dritte ReDim erstellt ein weiteres neues Array entfernt und andere fünf Spalten vom Ende jeder Zeile in jeder Ebene.In diesem Fall werden keine vorhandenen Elemente kopiert.Diese Anweisung stellt das Array auf die ursprüngliche Größe zurückgesetzt.Da die - Anweisung nicht den Preserve-Modifizierer umfasst, legt sie alle Arrayelemente auf ihre ursprünglichen Standardwerte fest.

Weitere Beispiele finden Sie unter Arrays in Visual Basic.

Siehe auch

Referenz

Const-Anweisung (Visual Basic)

Dim-Anweisung (Visual Basic)

Erase-Anweisung (Visual Basic)

Nothing (Visual Basic)

IndexOutOfRangeException

Weitere Ressourcen

Arrays in Visual Basic