Compartilhar via


Como inicializar uma variável de matriz no Visual Basic

Você inicializa uma variável de matriz incluindo um literal de matriz em uma cláusula New e especificando os valores iniciais da matriz. Você pode especificar o tipo ou permitir que ele seja inferido dos valores no literal da matriz. Para obter mais informações sobre como o tipo é inferido, confira "Populando uma matriz com valores iniciais" em Matrizes.

Para inicializar uma variável de matriz usando um literal de matriz

  • Na cláusula New ou ao atribuir o valor da matriz, forneça os valores de elemento dentro de chaves ({}). O exemplo a seguir mostra várias maneiras de declarar, criar e inicializar uma variável para conter uma matriz que tenha elementos do 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}
    

    Depois de cada instrução ser executada, a matriz criada terá um comprimento de 3, com elementos no índice 0 até o índice 2 contendo os valores iniciais. Se você fornecer o limite superior e os valores, você deverá incluir um valor para cada elemento do índice 0 até o limite superior.

    Observe que você não precisa especificar o limite superior do índice se você fornecer valores de elemento em um literal de matriz. Se nenhum limite superior for especificado, o tamanho da matriz será inferido com base no número de valores no literal de matriz.

Para inicializar uma variável de matriz multidimensional usando literais de matriz

  • Aninhar os valores dentro de chaves ({}) entre chaves. Verifique se os literais de matriz aninhados inferem como matrizes do mesmo tipo e comprimento. O exemplo de código a seguir mostra vários exemplos de inicialização de matriz multidimensional.

    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}}}
    
  • Você pode especificar explicitamente os limites de matriz ou deixá-los de fora e fazer com que o compilador infira os limites de matriz com base nos valores no literal de matriz. Se você fornecer o limite superior e os valores, você deverá incluir um valor para cada elemento do índice 0 até o limite superior em cada dimensão. O exemplo a seguir mostra várias maneiras de declarar, criar e inicializar uma variável para conter uma matriz bidimensional que tenha elementos do 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}}
    

    Após a execução de cada instrução, a matriz criada contém seis elementos inicializados que têm índices (0,0), (0,1), (0,2), (1,0), (1,1) e (1,2). Cada local da matriz contém o valor 10.

  • O exemplo a seguir itera por meio de uma matriz multidimensional. Em um aplicativo de console do Windows escrito no Visual Basic, cole o código dentro do método Sub Main(). Os últimos comentários mostram a saída.

    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
    

Para inicializar uma variável de matriz denteada usando literais de matriz

  • Aninhe os valores do objeto dentro de chaves ({}). Embora você também possa aninhar literais de matriz que especificam matrizes de comprimentos diferentes, no caso de uma matriz denteada, verifique se os literais de matriz aninhados estão entre parênteses (()). Os parênteses forçam a avaliação dos literais de matriz aninhados e as matrizes resultantes são usadas como os valores iniciais da matriz denteada. O exemplo de código a seguir mostra dois exemplos de inicialização de matriz denteada.

    ' 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() {}}
    
  • O exemplo a seguir itera por meio de uma matriz denteada. Em um aplicativo de console do Windows escrito no Visual Basic, cole o código dentro do método Sub Main(). Os últimos comentários no código mostram a saída.

    ' 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
    

Confira também