Řešení potíží s poli (Visual Basic)
Tato stránka obsahuje některé běžné problémy, ke kterým může dojít při práci s poli.
Chyby kompilace při deklaraci a inicializaci pole
Chyby kompilace mohou vzniknout z nepochopení pravidel pro deklaraci, vytváření a inicializaci polí. Nejběžnější příčiny chyb jsou následující:
Zadání klauzule New Operator po zadání délek dimenzí v deklaraci proměnné pole. Následující řádky kódu zobrazují neplatné deklarace tohoto typu.
Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()
Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)
Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()
Určení délky kót pro více než pole nejvyšší úrovně zubatého pole. Následující řádek kódu ukazuje neplatnou deklaraci tohoto typu.
Dim INVALIDjaggedByteArray(1)(1) As Byte
Vynechání klíčového
New
slova při zadávání hodnot prvků. Následující řádek kódu ukazuje neplatnou deklaraci tohoto typu.Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}
Zadání klauzule
New
bez závorek ({}
). Následující řádky kódu zobrazují neplatné deklarace tohoto typu.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)
Přístup k poli mimo hranice
Proces inicializace pole přiřadí každé dimenzi horní a dolní mez. Každý přístup k prvku pole musí určovat platný index neboli dolní index pro každou dimenzi. Pokud je některý index pod dolní mez nebo nad horní mez, dojde k výjimce IndexOutOfRangeException . Kompilátor nemůže takovou chybu rozpoznat, takže k chybě dochází za běhu.
Určení hranic
Pokud jiná součást předá vašemu kódu pole, například jako argument procedury, neznáte velikost tohoto pole nebo délky jeho rozměrů. Před pokusem o přístup k prvkům byste měli vždy určit horní mez pro každou dimenzi pole. Pokud bylo pole vytvořeno jiným způsobem než pomocí klauzule jazyka Visual Basic New
, dolní mez může být něco jiného než 0 a je nejbezpečnější určit i tuto dolní mez.
Určení dimenze
Při určování hranic multidimenzionálního pole dbejte na to, jak určíte dimenzi. Parametry dimension
GetLowerBound metod a GetUpperBound jsou založené na 0, zatímco Rank
parametry jazyka Visual Basic LBound a UBound funkce jsou založené na 1.