Procedura: inizializzare una variabile di matrice in Visual Basic

Inizializzare una variabile di matrice includendo un valore letterale di matrice in una clausola New e specificando i valori iniziali della matrice. È possibile specificare il tipo o consentire che venga dedotto dai valori nel valore letterale della matrice. Per altre informazioni su come viene dedotto il tipo, vedere "Popolamento di una matrice con valori iniziali" in Matrici.

Per inizializzare una variabile di matrice usando un valore letterale di matrice

  • Nella clausola New o quando si assegna il valore della matrice, specificare i valori degli elementi all'interno di parentesi graffe ({}). Nell'esempio seguente vengono illustrati diversi modi per dichiarare, creare e inizializzare una variabile per contenere una matrice con elementi di tipo 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}
    

    Dopo l'esecuzione di ogni istruzione, la matrice creata ha una lunghezza di 3, con gli elementi in corrispondenza dell'indice 0 fino all'indice 2 contenenti i valori iniziali. Se si specificano sia il limite superiore che i valori, è necessario includere un valore per ogni elemento dall'indice 0 al limite superiore.

    Si noti che non è necessario specificare il limite superiore dell'indice se si specificano valori degli elementi in un valore letterale di matrice. Se non viene specificato alcun limite superiore, le dimensioni della matrice vengono dedotte in base al numero di valori nel valore letterale della matrice.

Per inizializzare una variabile di matrice multidimensionale usando valori letterali di matrice

  • Annidare i valori tra parentesi graffe ({}) all'interno di parentesi graffe. Assicurarsi che i valori letterali di matrice annidati vengano tutti dedotti come matrici dello stesso tipo e lunghezza. Nell'esempio di codice seguente vengono illustrati diversi esempi di inizializzazione di matrici multidimensionali.

    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}}}
    
  • È possibile specificare in modo esplicito i limiti della matrice oppure ometterli e fare sì che il compilatore deduca i limiti della matrice in base ai valori nel valore letterale della matrice. Se si specificano sia i limiti superiori che i valori, è necessario includere un valore per ogni elemento dall'indice 0 al limite superiore in ogni dimensione. Nell'esempio seguente vengono illustrati diversi modi per dichiarare, creare e inizializzare una variabile per contenere una matrice bidimensionale con elementi di tipo 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}}
    

    Dopo l'esecuzione di ogni istruzione, la matrice creata contiene sei elementi inizializzati con indici (0,0), (0,1), (0,2), (1,0), (1,1) e (1,2). Ogni posizione della matrice contiene il valore 10.

  • L'esempio seguente illustra come eseguire l'iterazione in una matrice multidimensionale. In un'applicazione console Windows scritta in Visual Basic incollare il codice all'interno del metodo Sub Main(). Gli ultimi commenti mostrano l'output.

    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
    

Per inizializzare una variabile di matrice di matrici usando valori letterali di matrice

  • Annidare i valori degli oggetti all'interno di parentesi graffe ({}). Sebbene sia anche possibile annidare valori letterali di matrice che specificano matrici di lunghezze diverse, nel caso di una matrice di matrici, assicurarsi che i valori letterali di matrice annidati siano racchiusi tra parentesi (()). Le parentesi forzano la valutazione dei valori letterali di matrice annidati e le matrici risultanti vengono usate come valori iniziali della matrice di matrici. Nell'esempio di codice seguente vengono illustrati due esempi di inizializzazione di una matrice di matrici.

    ' 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() {}}
    
  • Nell'esempio seguente viene eseguita l'iterazione in una matrice di matrici. In un'applicazione console Windows scritta in Visual Basic incollare il codice all'interno del metodo Sub Main(). Gli ultimi commenti nel codice mostrano l'output.

    ' 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
    

Vedi anche