Ř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 dimensionGetLowerBound metod a GetUpperBound jsou založené na 0, zatímco Rank parametry jazyka Visual Basic LBound a UBound funkce jsou založené na 1.

Viz také