Cómo: Inicializar una variable de matriz en Visual Basic

Para inicializar una variable de matriz, incluye un literal de matriz en una New cláusula y especifica los valores iniciales de la matriz. Puedes especificar el tipo o permitir que se infiera a partir de los valores del literal de matriz. Para obtener más información sobre cómo se deduce el tipo, vea «Rellenar una matriz con valores iniciales» en Matrices.

Para inicializar una variable de matriz mediante un literal de matriz

  • En la New cláusula o al asignar el valor de la matriz, proporciona los valores de elemento dentro de llaves ({}). En el ejemplo siguiente se muestran varias maneras de declarar, crear e inicializar una variable para que contenga una matriz que tenga elementos de 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}
    

    Después de ejecutar cada instrucción, la matriz que se crea tiene una longitud de 3, con elementos en el índice 0 al índice 2 que contienen los valores iniciales. Si proporcionas el límite superior y los valores, debes incluir un valor para cada elemento del índice 0 al límite superior.

    Observa que no es necesario especificar el límite superior del índice si proporcionas valores de elemento en un literal de matriz. Si no se especifica ningún límite superior, el tamaño de la matriz se deduce en función del número de valores del literal de matriz.

Para inicializar una variable de matriz multidimensional mediante literales de matriz

  • Anida valores dentro de llaves ({}) dentro de llaves. Asegúrate de que los literales de matriz anidados inferen como matrices del mismo tipo y longitud. Los siguientes ejemplos de código muestran diversos ejemplos de inicialización 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}}}
    
  • Puedes especificar explícitamente los límites de matriz o dejarlos fuera y hacer que el compilador infiera los límites de la matriz en función de los valores del literal de matriz. Si proporcionas el límite superior y los valores, debes incluir un valor para cada elemento del índice 0 al límite superior en cada dimensión. En el ejemplo siguiente se muestran varias maneras de declarar, crear e inicializar una variable para que contenga una matriz bidimensional que tenga elementos de 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}}
    

    Después de ejecutar cada instrucción, la matriz creada contiene seis elementos inicializados que tienen índices (0,0), (0,1), (0,2), (1,0), (1,1)y (1,2). Cada ubicación de matriz contiene el valor 10.

  • El ejemplo siguiente recorre en iteración una matriz multidimensional. En una aplicación de consola de Windows escrita en Visual Basic, pega el código dentro del Sub Main() método. Los últimos comentarios muestran la salida.

    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 una variable de matriz irregular mediante literales de matriz

  • Anida los valores de objeto dentro de llaves ({}). Aunque también puedes anidar literales de matriz que especifican matrices de diferentes longitudes, en el caso de una matriz escalonada, asegúrate de que los literales de matriz anidados están entre paréntesis (()). Los paréntesis fuerzan la evaluación de los literales de matriz anidados y las matrices resultantes se usan como valores iniciales de la matriz irregular. En el ejemplo de código siguiente se muestran dos ejemplos de inicialización de matriz irregular.

    ' 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() {}}
    
  • El ejemplo siguiente recorre en iteración una matriz multidimensional. En una aplicación de consola de Windows escrita en Visual Basic, pega el código dentro del Sub Main() método. Los últimos comentarios del código muestran la salida.

    ' 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
    

Vea también