Dela via


Felsöka matriser (Visual Basic)

På den här sidan visas några vanliga problem som kan uppstå när du arbetar med matriser.

Kompileringsfel vid deklarering och initiering av en matris

Kompileringsfel kan uppstå på grund av missförstånd i reglerna för att deklarera, skapa och initiera matriser. De vanligaste orsakerna till fel är följande:

  • Ange en Ny operator-sats när du har angett dimensionslängder i matrisvariabeldeklarationen. Följande kodrader visar ogiltiga deklarationer av den här typen.

    Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()

    Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)

    Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()

  • Ange dimensionslängder för mer än matrisen på den översta nivån för en ojämn matris. Följande kodrad visar en ogiltig deklaration av den här typen.

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • Utelämna nyckelordet New när du anger elementvärdena. Följande kodrad visar en ogiltig deklaration av den här typen.

    Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}

  • Tillhandahålla en New sats utan klammerparenteser ({}). Följande kodrader visar ogiltiga deklarationer av den här typen.

    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)

Åtkomst till en matris utanför gränserna

Processen med att initiera en matris tilldelar en övre gräns och en lägre gräns till varje dimension. Varje åtkomst till ett element i matrisen måste ange ett giltigt index, eller nedsänkt, för varje dimension. Om något index ligger under dess nedre gräns eller över dess övre gräns resulterar ett IndexOutOfRangeException undantag. Kompilatorn kan inte identifiera ett sådant fel, så ett fel inträffar vid körning.

Fastställa gränser

Om en annan komponent skickar en matris till din kod, till exempel som ett procedurargument, vet du inte storleken på matrisen eller längden på dess dimensioner. Du bör alltid bestämma den övre gränsen för varje dimension i en matris innan du försöker komma åt några element. Om matrisen har skapats på något annat sätt än en Visual Basic-sats New kan den nedre gränsen vara något annat än 0, och det är säkrast att även fastställa den nedre gränsen.

Ange dimensionen

När du fastställer gränserna för en flerdimensionell matris bör du se till att ange dimensionen. Parametrarna dimensionGetLowerBound för metoderna och GetUpperBound är 0-baserade, medan parametrarna Rank för Visual Basic LBound och UBound funktionerna är 1-baserade.

Se även