In Visual Basic sind Arrays eine Struktur fester oder variabler Länge, die Elemente desselben Typs speichert. Dynamische Arrays erfordern besondere Aufmerksamkeit bei der Initialisierung und Größenänderung.
In VB6 gab es nur statische und dynamische Arrays, mit fester oder variabler Größe. In VB.NET sind vollwertige eindimensionale, mehrdimensionale und gestufte Arrays jeden Typs mit Typensicherheit implementiert.
Häufige Fehler sind:
Initialisieren Sie immer das Array vor der Verwendung und ändern Sie dessen Größe vorsichtig:
' Erklärung Dim arr() As Integer ' Initialisierung ReDim arr(4) ' Indizes 0–4 arr(0) = 1 ' Größenänderung mit Wertbeibehaltung ReDim Preserve arr(6)
Wichtige Merkmale:
Was passiert, wenn Sie ein Array deklarieren, aber keine Initialisierung durchführen?
Für eindimensionale Arrays vom Typ Dim arr() As Integer existiert die Variable, aber das Array selbst wird nicht zugewiesen, der Zugriff auf arr.Length führt zu einer Ausnahme.
Kann ReDim Preserve zur Größenänderung eines mehrdimensionalen Arrays in beiden Dimensionen verwendet werden?
Nein, ReDim Preserve erlaubt nur die Änderung der letzten Dimension, andernfalls tritt ein Laufzeitfehler auf.
Was passiert mit den Elementen des Arrays bei einer Größenänderung über ReDim Preserve?
Die alten Werte bleiben erhalten, und neue Elemente erhalten die Standardwerte (z.B. 0 für Integer, Nothing für Referenztypen).
** Negativer Fall
Das Array wird deklariert, aber nicht initialisiert (Dim arr() As Integer), und beim Zugriff auf arr.Length erhalten wir eine NullReferenceException.
Vorteile:
Nachteile:
** Positiver Fall
Das Array wird immer explizit über ReDim initialisiert, die Größenänderung erfolgt nur außerhalb der Hauptschleife, und für sich häufig ändernde Listen wird List(Of Integer) verwendet.
Vorteile:
Nachteile: