Matrisdimensioner i Visual Basic
En dimension är en riktning där du kan variera specifikationen för en matriss element. En matris som innehåller försäljningssumman för varje dag i månaden har en dimension (dagen i månaden). En matris som innehåller försäljningssumman per avdelning för varje dag i månaden har två dimensioner (avdelningsnumret och dagen i månaden). Antalet dimensioner som en matris har kallas dess rangordning.
Kommentar
Du kan använda egenskapen Rank för att avgöra hur många dimensioner en matris har.
Arbeta med dimensioner
Du anger ett element i en matris genom att ange ett index eller ett nedsänkt objekt för var och en av dess dimensioner. Elementen är sammanhängande längs varje dimension från index 0 till det högsta indexet för den dimensionen.
Följande illustrationer visar den konceptuella strukturen för matriser med olika rangordningar. Varje element i illustrationerna visar de indexvärden som har åtkomst till det. Du kan till exempel komma åt det första elementet i den andra raden i den tvådimensionella matrisen genom att ange index (1, 0)
.
En dimension
Många matriser har bara en dimension, till exempel antalet personer i varje ålder. Det enda kravet för att ange ett element är den ålder för vilken elementet innehåller antalet. Därför använder en sådan matris bara ett index. I följande exempel deklareras en variabel för att innehålla en endimensionell matris med åldersantal för åldrarna 0 till 120.
Dim ageCounts(120) As UInteger
Två dimensioner
Vissa matriser har två dimensioner, till exempel antalet kontor på varje våning i varje byggnad på ett campus. Specifikationen av ett element kräver både byggnadsnumret och golvet, och varje element innehåller antalet för den kombinationen av byggnad och våning. Därför använder en sådan matris två index. I följande exempel deklareras en variabel som innehåller en tvådimensionell matris med kontorsantal, för byggnader 0 till och med 40 och våning 0 till och med 5.
Dim officeCounts(40, 5) As Byte
En tvådimensionell matris kallas även för en rektangulär matris.
Tre dimensioner
Några matriser har tre dimensioner, till exempel värden i tredimensionellt utrymme. En sådan matris använder tre index, som i det här fallet representerar koordinaterna x, y och z för fysiskt utrymme. I följande exempel deklareras en variabel som innehåller en tredimensionell matris med lufttemperaturer vid olika punkter i en tredimensionell volym.
Dim airTemperatures(99, 99, 24) As Single
Fler än tre dimensioner
Även om en matris kan ha så många som 32 dimensioner är det ovanligt att ha mer än tre.
Kommentar
När du lägger till dimensioner i en matris ökar den totala lagring som behövs av matrisen avsevärt, så använd flerdimensionella matriser med försiktighet.
Använda olika dimensioner
Anta att du vill spåra försäljningsbelopp för varje dag i den aktuella månaden. Du kan deklarera en endimensionell matris med 31 element, ett för varje dag i månaden, vilket visas i följande exempel.
Dim salesAmounts(30) As Double
Anta nu att du vill spåra samma information inte bara för varje dag i en månad utan även för varje månad på året. Du kan deklarera en tvådimensionell matris med 12 rader (för månaderna) och 31 kolumner (för dagarna), som följande exempel visar.
Dim salesAmounts(11, 30) As Double
Anta nu att du bestämmer dig för att lagra matrisinformation i mer än ett år. Om du vill spåra försäljningsbelopp i 5 år kan du deklarera en tredimensionell matris med 5 lager, 12 rader och 31 kolumner, vilket visas i följande exempel.
Dim salesAmounts(4, 11, 30) As Double
Observera att eftersom varje index varierar från 0 till maximalt deklareras varje dimension av salesAmounts
som en mindre än den nödvändiga längden för den dimensionen. Observera också att matrisens storlek ökar med varje ny dimension. De tre storlekarna i föregående exempel är 31, 372 respektive 1 860 element.
Kommentar
Du kan skapa en matris utan att använda -instruktionen Dim
New
eller -satsen. Du kan till exempel anropa CreateInstance metoden, eller så kan en annan komponent skicka koden till en matris som skapats på det här sättet. En sådan matris kan ha en lägre bindning än 0. Du kan alltid testa för den nedre gränsen för en dimension med hjälp GetLowerBound av metoden eller LBound
funktionen.