Megosztás a következőn keresztül:


Tömbök hibaelhárítása (Visual Basic)

Ez a lap felsorol néhány gyakori problémát, amelyek tömbök használatakor fordulhatnak elő.

Tömb deklarálása és inicializálása fordítási hibák

Fordítási hibák a tömbök deklarálására, létrehozására és inicializálására vonatkozó szabályok félreértéséből adódhatnak. A hibák leggyakoribb okai a következők:

  • Új operátor záradék megadása a dimenzióhosszok tömbváltozó-deklarációban való megadása után. Az alábbi kódsorok érvénytelen ilyen típusú deklarációkat mutatnak.

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

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

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

  • Dimenzióhosszok megadása egy szaggatott tömb legfelső szintű tömbénél többre. Az alábbi kódsor egy ilyen típusú érvénytelen deklarációt jelenít meg.

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • Kihagyja a kulcsszót New az elemértékek megadásakor. Az alábbi kódsor egy ilyen típusú érvénytelen deklarációt jelenít meg.

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

  • New Záradék kapcsos zárójelek nélkül történő ellátása ({}). Az alábbi kódsorok érvénytelen ilyen típusú deklarációkat mutatnak.

    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)

Tömb elérése korlátokon kívül

A tömb inicializálásának folyamata minden dimenzióhoz egy felső és egy alsó kötést rendel. A tömb egy eleméhez való minden hozzáférésnek minden dimenzióhoz érvényes indexet vagy alsó indexet kell megadnia. Ha bármelyik index az alsó vagy a felső korlátja alatt van, kivételt IndexOutOfRangeException eredményez. A fordító nem tudja észlelni az ilyen hibát, ezért hiba történik futásidőben.

Korlátok meghatározása

Ha egy másik összetevő átad egy tömböt a kódnak, például eljárásargumentumként, akkor nem tudja a tömb méretét vagy dimenzióinak hosszát. Minden elem elérése előtt mindig meg kell határoznia a tömb minden dimenziójának felső határát. Ha a tömb a Visual Basic New záradéktól eltérő módon lett létrehozva, az alsó kötés lehet 0-nál más, és a legbiztonságosabb az alsó kötés meghatározása is.

A dimenzió megadása

A többdimenziós tömbök határainak meghatározásakor ügyeljen a dimenzió megadására. A dimension és metódusok GetLowerBound paraméterei 0-alapúak, míg a Rank Visual Basic LBound és UBound a függvények paraméterei 1-alapúakGetUpperBound.

Lásd még