W Visual Basic tablice stanowią strukturę o stałej lub zmiennej długości, która przechowuje elementy tego samego typu. Dynamiczne tablice szczególnie wymagają uwagi przy inicjalizacji i zmianie rozmiaru.
W VB6 były tylko tablice statyczne i dynamiczne, o stałym lub zmiennym rozmiarze. W VB.NET zrealizowane są pełnoprawne tablice jednowymiarowe, wielowymiarowe i schodkowe dowolnego typu z bezpieczeństwem typów.
Częste błędy —
Zawsze inicjalizuj tablicę przed użyciem i ostrożnie zmieniaj jej rozmiar:
' Deklaracja Dim arr() As Integer ' Inicjalizacja ReDim arr(4) ' Indeksy 0–4 arr(0) = 1 ' Zmiana rozmiaru z zachowaniem wartości ReDim Preserve arr(6)
Kluczowe cechy:
Co się stanie, jeśli zadeklarujesz tablicę, ale nie wykonasz jej inicjalizacji?
Dla jednowymiarowych tablic typu Dim arr() As Integer zmienna istnieje, ale sama tablica nie jest przydzielona, odwołanie do arr.Length spowoduje wyjątek.
Czy można użyć ReDim Preserve do zmiany rozmiaru wielowymiarowej tablicy w obu wymiarach?
Nie, ReDim Preserve pozwala tylko na zmianę ostatniego wymiaru, w przeciwnym razie wystąpi błąd czasu wykonania.
Co się wydarzy z elementami tablicy przy zwiększeniu rozmiaru przez ReDim Preserve?
Stare wartości zostaną zachowane, a nowe elementy otrzymają wartości domyślne (np. 0 dla Integer, Nothing dla typów referencyjnych).
** Negatywny przypadek
Tablica jest zadeklarowana, ale nie zainicjalizowana (Dim arr() As Integer), a przy odwołaniu do arr.Length otrzymujemy NullReferenceException.
Plusy:
Minusy:
** Pozytywny przypadek
Tablica zawsze jest wyraźnie inicjalizowana przez ReDim, zmiana rozmiaru dokonuje się tylko poza główną pętlą, a dla często zmieniających się list wykorzystywana jest List(Of Integer).
Plusy:
Minusy: