Delen via


Procedure: Een matrixvariabele initialiseren in Visual Basic

U initialiseert een matrixvariabele door een letterlijke matrix op te nemen in een New component en de initiële waarden van de matrix op te geven. U kunt het type opgeven of toestaan dat het wordt afgeleid van de waarden in de letterlijke matrix. Zie 'Een matrix vullen met initiële waarden' in matrices voor meer informatie over hoe het type wordt afgeleid.

Een matrixvariabele initialiseren met behulp van een letterlijke matrix

  • Geef in de New component of wanneer u de matrixwaarde toewijst de elementwaarden binnen accolades ({}). In het volgende voorbeeld ziet u verschillende manieren om een variabele te declareren, te maken en te initialiseren die een matrix bevat die elementen van het type Charbevat.

    ' 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}
    

    Nadat elke instructie is uitgevoerd, heeft de gemaakte matrix een lengte van 3, met elementen bij index 0 tot en met index 2 die de initiële waarden bevatten. Als u zowel de bovengrens als de waarden opgeeft, moet u een waarde voor elk element van index 0 tot en met de bovengrens opnemen.

    U hoeft de bovengrens van de index niet op te geven als u elementwaarden opgeeft in een letterlijke matrix. Als er geen bovengrens is opgegeven, wordt de grootte van de matrix afgeleid op basis van het aantal waarden in de letterlijke matrix.

Een multidimensionale matrixvariabele initialiseren met behulp van letterlijke matrices

  • Nest waarden binnen accolades ({}) binnen accolades. Zorg ervoor dat de geneste matrix allemaal wordt afgeleid als matrices van hetzelfde type en dezelfde lengte. In het volgende codevoorbeeld ziet u verschillende voorbeelden van initialisatie van multidimensionale matrices.

    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}}}
    
  • U kunt expliciet de matrixgrenzen opgeven of ze weglaten en de compiler de matrixgrenzen laten afleiden op basis van de waarden in de letterlijke waarde van de matrix. Als u zowel de bovengrenzen als de waarden opgeeft, moet u een waarde voor elk element van index 0 tot en met de bovengrens in elke dimensie opnemen. In het volgende voorbeeld ziet u verschillende manieren om een variabele te declareren, te maken en te initialiseren die een tweedimensionale matrix bevat die elementen van het type bevat 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}}
    

    Nadat elke instructie is uitgevoerd, bevat de gemaakte matrix zes geïnitialiseerde elementen met indexen (0,0), (0,1), (0,2), , (1,0), (1,1)en (1,2). Elke matrixlocatie bevat de waarde 10.

  • In het volgende voorbeeld wordt een multidimensionale matrix herhaald. Plak de code in Sub Main() de methode in een Windows-consoletoepassing die is geschreven in Visual Basic. In de laatste opmerkingen wordt de uitvoer weergegeven.

    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
    

Een onregelmatige matrixvariabele initialiseren met behulp van letterlijke matrixmatrices

  • Objectwaarden in accolades nesten ({}). Hoewel u ook letterlijke matrices kunt nesten die matrices van verschillende lengten opgeven, moet u er in het geval van een gelabelde matrix voor zorgen dat de letterlijke letterlijke geneste matrix tussen haakjes (()) staat. De haakjes dwingen de evaluatie van de letterlijke waarden van geneste matrices af en de resulterende matrices worden gebruikt als de initiële waarden van de gelabelde matrix. In het volgende codevoorbeeld ziet u twee voorbeelden van initialisatie van gelabelde matrix.

    ' 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() {}}
    
  • In het volgende voorbeeld wordt een onregelmatige matrix herhaald. Plak de code in Sub Main() de methode in een Windows-consoletoepassing die is geschreven in Visual Basic. In de laatste opmerkingen in de code wordt de uitvoer weergegeven.

    ' 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
    

Zie ook