Problemen met matrices oplossen (Visual Basic)
Deze pagina bevat enkele veelvoorkomende problemen die kunnen optreden bij het werken met matrices.
Compilatiefouten bij het declareren en initialiseren van een matrix
Compilatiefouten kunnen het gevolg zijn van een misverstand over de regels voor het declareren, maken en initialiseren van matrices. De meest voorkomende oorzaken van fouten zijn de volgende:
Het opgeven van een nieuwe operator-component na het opgeven van dimensielengten in de declaratie van de matrixvariabele. Op de volgende coderegels worden ongeldige declaraties van dit type weergegeven.
Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()
Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)
Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()
Dimensielengten opgeven voor meer dan de matrix op het hoogste niveau van een gekartelde matrix. De volgende coderegel toont een ongeldige declaratie van dit type.
Dim INVALIDjaggedByteArray(1)(1) As Byte
Het trefwoord weglaten
New
bij het opgeven van de elementwaarden. De volgende coderegel toont een ongeldige declaratie van dit type.Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}
Een component zonder accolades opgeven
New
({}
). Op de volgende coderegels worden ongeldige declaraties van dit type weergegeven.Dim INVALIDsingleDimByteArray() As Byte = New Byte()
Dim INVALIDsingleDimByteArray() As Byte = New Byte(2)
Dim INVALIDtwoDimShortArray(,) As Short = New Short(,)
Dim INVALIDtwoDimShortArray(,) As Short = New Short(1, 1)
Toegang tot een matrix buiten grenzen
Tijdens het initialiseren van een matrix worden aan elke dimensie een boven- en ondergrens toegewezen. Elke toegang tot een element van de matrix moet voor elke dimensie een geldige index of subscript opgeven. Als een index zich onder de ondergrens of boven de bovengrens bevindt, treedt er een IndexOutOfRangeException uitzondering op. De compiler kan een dergelijke fout niet detecteren, dus er treedt een fout op tijdens runtime.
Grenzen bepalen
Als een ander onderdeel een matrix doorgeeft aan uw code, bijvoorbeeld als een procedureargument, weet u de grootte van die matrix of de lengte van de dimensies niet. U moet altijd de bovengrens voor elke dimensie van een matrix bepalen voordat u toegang probeert te krijgen tot elementen. Als de matrix op een andere wijze dan een Visual Basic-component New
is gemaakt, kan de ondergrens iets anders zijn dan 0 en is het ook het veiligst om die ondergrens te bepalen.
De dimensie opgeven
Let bij het bepalen van de grenzen van een multidimensionale matrix op hoe u de dimensie opgeeft. De dimension
parameters van de GetLowerBound methoden en GetUpperBound zijn gebaseerd op 0, terwijl de Rank
parameters van visual basic LBound en UBound functies zijn gebaseerd op 1.