Delen via


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.

Zie ook