Wymiary tablic w Visual Basic
Wymiar to kierunek, w którym można zmienić specyfikację elementów tablicy. Tablica zawierająca sumę sprzedaży dla każdego dnia miesiąca ma jeden wymiar (dzień miesiąca). Tablica zawierająca sumę sprzedaży według działu dla każdego dnia miesiąca ma dwa wymiary (numer działu i dzień miesiąca). Liczba wymiarów tablicy jest nazywana jej rangą.
Uwaga
Za pomocą Rank właściwości można określić, ile wymiarów ma tablica.
Praca z wymiarami
Należy określić element tablicy, podając indeks lub indeks dolny dla każdego z jego wymiarów. Elementy są ciągłe wzdłuż każdego wymiaru od indeksu 0 do najwyższego indeksu dla tego wymiaru.
Na poniższych ilustracjach przedstawiono koncepcyjną strukturę tablic z różnymi rangami. Każdy element na ilustracjach przedstawia wartości indeksu, które uzyskują do niego dostęp. Na przykład można uzyskać dostęp do pierwszego elementu drugiego wiersza tablicy dwuwymiarowej, określając indeksy (1, 0)
.
Jeden wymiar
Wiele tablic ma tylko jeden wymiar, taki jak liczba osób w każdym wieku. Jedynym wymaganiem do określenia elementu jest wiek, dla którego ten element zawiera liczbę. W związku z tym tablica używa tylko jednego indeksu. Poniższy przykład deklaruje zmienną do przechowywania jednowymiarowej tablicy wiekowej w wieku od 0 do 120 lat.
Dim ageCounts(120) As UInteger
Dwa wymiary
Niektóre tablice mają dwa wymiary, takie jak liczba biur na każdym piętrze każdego budynku na kampusie. Specyfikacja elementu wymaga zarówno numeru budynku, jak i podłogi, a każdy element zawiera liczbę dla tej kombinacji budynku i podłogi. W związku z tym tablica używa dwóch indeksów. W poniższym przykładzie zadeklarowana jest zmienna do przechowywania dwuwymiarowej tablicy liczników biurowych dla budynków od 0 do 40 i piętrach od 0 do 5.
Dim officeCounts(40, 5) As Byte
Tablica dwuwymiarowa jest również nazywana tablicą prostokątną.
Trzy wymiary
Kilka tablic ma trzy wymiary, takie jak wartości w trójwymiarowej przestrzeni. Taka tablica używa trzech indeksów, które w tym przypadku reprezentują współrzędne x, y i z przestrzeni fizycznej. Poniższy przykład deklaruje zmienną do przechowywania trójwymiarowej tablicy temperatur powietrza w różnych punktach w trójwymiarowej objętości.
Dim airTemperatures(99, 99, 24) As Single
Więcej niż trzy wymiary
Chociaż tablica może mieć maksymalnie 32 wymiary, rzadko ma więcej niż trzy.
Uwaga
Podczas dodawania wymiarów do tablicy łączna ilość miejsca potrzebnego przez tablicę znacznie się zwiększa, dlatego należy używać tablic wielowymiarowych z ostrożnością.
Korzystanie z różnych wymiarów
Załóżmy, że chcesz śledzić kwoty sprzedaży dla każdego dnia bieżącego miesiąca. Można zadeklarować tablicę jednowymiarową z 31 elementami, po jednym dla każdego dnia miesiąca, jak pokazano w poniższym przykładzie.
Dim salesAmounts(30) As Double
Teraz załóżmy, że chcesz śledzić te same informacje nie tylko dla każdego dnia miesiąca, ale także dla każdego miesiąca roku. Można zadeklarować tablicę dwuwymiarową z 12 wierszami (w miesiącach) i 31 kolumnami (w dniach), jak pokazano w poniższym przykładzie.
Dim salesAmounts(11, 30) As Double
Teraz załóżmy, że zdecydujesz się na posiadanie informacji o posiadaniu tablicy przez więcej niż jeden rok. Jeśli chcesz śledzić kwoty sprzedaży przez 5 lat, możesz zadeklarować tablicę trójwymiarową z 5 warstwami, 12 wierszami i 31 kolumnami, jak pokazano w poniższym przykładzie.
Dim salesAmounts(4, 11, 30) As Double
Należy pamiętać, że ponieważ każdy indeks różni się od 0 do maksymalnej salesAmounts
, każdy wymiar jest zadeklarowany jako mniejszy niż wymagana długość tego wymiaru. Należy również pamiętać, że rozmiar tablicy zwiększa się wraz z każdym nowym wymiarem. Trzy rozmiary w poprzednich przykładach to odpowiednio 31, 372 i 1860 elementów.
Uwaga
Tablicę można utworzyć bez użycia instrukcji Dim
lub klauzuli New
. Można na przykład wywołać metodę CreateInstance lub inny składnik może przekazać kod tablicy utworzonej w ten sposób. Taka tablica może mieć dolną granicę inną niż 0. Zawsze można przetestować dolną granicę wymiaru przy użyciu GetLowerBound metody lub LBound
funkcji.