Dela via


Anvisningar: Initiera en matrisvariabel i Visual Basic

Du initierar en matrisvariabel genom att inkludera en matrisliteral i en New sats och ange de inledande värdena för matrisen. Du kan antingen ange typen eller tillåta att den härleds från värdena i matrisliteralen. Mer information om hur typen härleds finns i "Fylla i en matris med initiala värden" i matriser.

Initiera en matrisvariabel med hjälp av en matrisliteral

  • Antingen i New -satsen eller när du tilldelar matrisvärdet anger du elementvärdena inuti klammerparenteser ({}). I följande exempel visas flera sätt att deklarera, skapa och initiera en variabel så att den innehåller en matris med element av typen Char.

    ' The following five lines of code create the same array.
    ' Preferred syntaxes are on the lines with chars1 and chars2.
    Dim chars1 = {"%"c, "&"c, "@"c}
    Dim chars2 As Char() = {"%"c, "&"c, "@"c}
    
    Dim chars3() As Char = {"%"c, "&"c, "@"c}
    Dim chars4 As Char() = New Char(2) {"%"c, "&"c, "@"c}
    Dim chars5() As Char = New Char(2) {"%"c, "&"c, "@"c}
    

    När varje instruktion har körts har matrisen som skapas en längd på 3, med element vid index 0 till index 2 som innehåller de inledande värdena. Om du anger både den övre gränsen och värdena måste du inkludera ett värde för varje element från index 0 via den övre gränsen.

    Observera att du inte behöver ange indexets övre gräns om du anger elementvärden i en matrisliteral. Om ingen övre gräns har angetts härleds matrisens storlek baserat på antalet värden i matrisliteralen.

Initiera en flerdimensionell matrisvariabel med hjälp av matrisliteraler

  • Kapsla värden inuti klammerparenteser ({}) inom klammerparenteser. Se till att den kapslade matrisliteralen alla härleder som matriser av samma typ och längd. I följande kodexempel visas flera exempel på initiering av flerdimensionella matriser.

    Dim numbers = {{1, 2}, {3, 4}, {5, 6}}
    Dim customerData = {{"City Power & Light", "http://www.cpandl.com/"},
                        {"Wide World Importers", "http://wideworldimporters.com"},
                        {"Lucerne Publishing", "http://www.lucernepublishing.com"}}
    
    ' You can nest array literals to create arrays that have more than two 
    ' dimensions.
    Dim twoSidedCube = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}
    
  • Du kan uttryckligen ange matrisgränsen eller utelämna dem och låta kompilatorn härleda matrisgränsen baserat på värdena i matrisliteralen. Om du anger både de övre gränserna och värdena måste du inkludera ett värde för varje element från index 0 via den övre gränsen i varje dimension. I följande exempel visas flera sätt att deklarera, skapa och initiera en variabel för att innehålla en tvådimensionell matris som har element av typen Short

    ' The following five lines of code create the same array.
    ' Preferred syntaxes are on the lines with scores1 and scores2.
    Dim scores1 = {{10S, 10S, 10S}, {10S, 10S, 10S}}
    Dim scores2 As Short(,) = {{10, 10, 10}, {10, 10, 10}}
    
    Dim scores3(,) As Short = {{10, 10, 10}, {10, 10, 10}}
    Dim scores4 As Short(,) = New Short(1, 2) {{10, 10, 10}, {10, 10, 10}}
    Dim scores5(,) As Short = New Short(1, 2) {{10, 10, 10}, {10, 10, 10}}
    

    När varje instruktion har körts innehåller den skapade matrisen sex initierade element som har index (0,0), , (0,1)(0,2), (1,0), (1,1)och (1,2). Varje matrisplats innehåller värdet 10.

  • Följande exempel itererar genom en flerdimensionell matris. I ett Windows-konsolprogram som är skrivet i Visual Basic klistrar du in koden i Sub Main() metoden. De sista kommentarerna visar utdata.

    Dim numbers = {{1, 2}, {3, 4}, {5, 6}}
    
    ' Iterate through the array.
    For index0 = 0 To numbers.GetUpperBound(0)
        For index1 = 0 To numbers.GetUpperBound(1)
            Debug.Write(numbers(index0, index1).ToString & " ")
        Next
        Debug.WriteLine("")
    Next
    ' Output
    '  1 2
    '  3 4
    '  5 6
    

Initiera en ojämn matrisvariabel med hjälp av matrisliteraler

  • Kapsla objektvärden inuti klammerparenteser ({}). Även om du också kan kapsla matrisliteraler som anger matriser med olika längd, kontrollerar du att de kapslade matrisliteralerna omges av parenteser (()). Parenteserna tvingar utvärderingen av de kapslade matrisliteralerna och de resulterande matriserna används som initiala värden för den ojämna matrisen. I följande kodexempel visas två exempel på initiering av ojämna matriser.

    ' Create a jagged array of arrays that have different lengths.
    Dim jaggedNumbers = {({1, 2, 3}), ({4, 5}), ({6}), ({7})}
    
    ' Create a jagged array of Byte arrays.
    Dim images = {New Byte() {}, New Byte() {}, New Byte() {}}
    
  • I följande exempel itereras via en ojämn matris. I ett Windows-konsolprogram som är skrivet i Visual Basic klistrar du in koden i Sub Main() metoden. De sista kommentarerna i koden visar utdata.

    ' Create a jagged array of arrays that have different lengths.
    Dim jaggedNumbers = {({1, 2, 3}), ({4, 5}), ({6}), ({7})}
    
    For indexA = 0 To jaggedNumbers.Length - 1
        For indexB = 0 To jaggedNumbers(indexA).Length - 1
            Debug.Write(jaggedNumbers(indexA)(indexB) & " ")
        Next
        Debug.WriteLine("")
    Next
    
    ' Output:
    '  1 2 3 
    '  4 5 
    '  6
    '  7
    

Se även