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 array-literalen. 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 alla kapslade matrisliteraler 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 specificerar matriser med olika längder, ska du i fallet med en ojämn matris kontrollera att de kapslade matrisliteralerna omges av parenteser (()). Parenteserna tvingar fram utvärderingen av de kapslade arrayliteralerna, och de resulterande arrayerna används som initiala värden för den ojämna arrayen. 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