Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 ByteKihagyja a kulcsszót
Newaz 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}NewZá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.