In Visual Basic zijn arrays een structuur van vaste of veranderlijke lengte die elementen van hetzelfde type opslaat. Dynamische arrays vereisen bijzondere aandacht bij initialisatie en grootteveranderingen.
In VB6 waren er alleen statische en dynamische arrays, met een vaste of veranderlijke grootte. In VB.NET zijn er volledige eendimensionale, multidimensionale en hellende arrays van elk type met typeveiligheid geïmplementeerd.
Veelvoorkomende fouten zijn—
Initialiseer altijd de array voordat je deze gebruikt en wijzig voorzichtig de grootte:
' Declaratie Dim arr() As Integer ' Initialisatie ReDim arr(4) ' Indexen 0-4 arr(0) = 1 ' Wijziging van grootte met behoud van waarden ReDim Preserve arr(6)
Belangrijke kenmerken:
Wat gebeurt er als je een array declareert, maar geen initialisatie uitvoert?
Voor eendimensionale arrays van het type Dim arr() As Integer bestaat de variabele, maar de array zelf wordt niet toegewezen, toegang tot arr.Length zal een uitzondering oproepen.
Kan je ReDim Preserve gebruiken om de grootte van een multidimensionale array in beide richtingen te wijzigen?
Nee, ReDim Preserve staat alleen de wijziging van de laatste dimensie toe, anders volgt er een runtime fout.
Wat gebeurt er met de elementen van de array bij het vergroten van de grootte via ReDim Preserve?
Oude waarden worden behouden, en nieuwe elementen krijgen standaardwaarden (bijvoorbeeld 0 voor Integer, Nothing voor referentietypen).
** Negatieve casus
De array is gedeclareerd, maar niet geïnitialiseerd (Dim arr() As Integer), en bij toegang tot arr.Length krijgen we een NullReferenceException.
Voordelen:
Nadelen:
** Positieve casus
De array wordt altijd expliciet geïnitialiseerd via ReDim, de grootteverandering gebeurt alleen buiten de hoofdloop, en voor vaak veranderende lijsten wordt List(Of Integer) gebruikt.
Voordelen:
Nadelen: