Cómo: Inicializar una variable de matriz en Visual BasicHow to: Initialize an Array Variable in Visual Basic

Para inicializar una variable de matriz, incluya un literal de matriz en una cláusula New y especifique los valores iniciales de la matriz.You initialize an array variable by including an array literal in a New clause and specifying the initial values of the array. Puede especificar el tipo o permitir que se infiera de los valores del literal de matriz.You can either specify the type or allow it to be inferred from the values in the array literal. Para obtener más información sobre cómo se deduce el tipo, vea "rellenar una matriz con valores iniciales" en matrices.For more information about how the type is inferred, see "Populating an Array with Initial Values" in Arrays.

Para inicializar una variable de matriz mediante un literal de matrizTo initialize an array variable by using an array literal

  • En la cláusula New, o al asignar el valor de matriz, proporcione los valores de elemento entre llaves ({}).Either in the New clause, or when you assign the array value, supply the element values inside braces ({}). En el ejemplo siguiente se muestran varias maneras de declarar, crear e inicializar una variable que contenga una matriz con elementos de tipo Char.The following example shows several ways to declare, create, and initialize a variable to contain an array that has elements of type 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}
    

    Una vez ejecutada cada instrucción, la matriz que se crea tiene una longitud de 3, con elementos en el índice 0 hasta el índice 2 que contiene los valores iniciales.After each statement executes, the array that's created has a length of 3, with elements at index 0 through index 2 containing the initial values. Si proporciona el límite superior y los valores, debe incluir un valor para cada elemento desde el índice 0 hasta el límite superior.If you supply both the upper bound and the values, you must include a value for every element from index 0 through the upper bound.

    Tenga en cuenta que no es necesario especificar el límite superior del índice si se proporcionan valores de elemento en un literal de matriz.Notice that you do not have to specify the index upper bound if you supply element values in an array literal. 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.If no upper bound is specified, the size of the array is inferred based on the number of values in the array literal.

Para inicializar una variable de matriz multidimensional utilizando literales de matrizTo initialize a multidimensional array variable by using array literals

  • Anide los valores entre llaves ({}) entre llaves.Nest values inside braces ({}) within braces. Asegúrese de que todos los literales de matriz anidados se deducen como matrices del mismo tipo y longitud.Ensure that the nested array literals all infer as arrays of the same type and length. En el ejemplo de código siguiente se muestran varios ejemplos de inicialización de la matriz multidimensional.The following code example shows several examples of multidimensional array initialization.

    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}}}
    
  • Puede especificar explícitamente los límites de la matriz o dejarlos fuera y hacer que el compilador deduzca los límites de la matriz basándose en los valores del literal de matriz.You can explicitly specify the array bounds, or leave them out and have the compiler infer the array bounds based on the values in the array literal. Si proporciona los límites superiores y los valores, debe incluir un valor para cada elemento desde el índice 0 hasta el límite superior de cada dimensión.If you supply both the upper bounds and the values, you must include a value for every element from index 0 through the upper bound in every dimension. En el ejemplo siguiente se muestran varias maneras de declarar, crear e inicializar una variable que contenga una matriz bidimensional con elementos de tipo ShortThe following example shows several ways to declare, create, and initialize a variable to contain a two-dimensional array that has elements of type 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}}
    

    Una vez ejecutada 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).After each statement executes, the created array contains six initialized elements that have indexes (0,0), (0,1), (0,2), (1,0), (1,1), and (1,2). Cada ubicación de la matriz contiene el valor 10.Each array location contains the value 10.

  • En el ejemplo siguiente se recorre en iteración una matriz multidimensional.The following example iterates through a multidimensional array. En una aplicación de consola de Windows escrita en Visual Basic, pegue el código dentro del método Sub Main().In a Windows console application that is written in Visual Basic, paste the code inside the Sub Main() method. Los últimos Comentarios muestran el resultado.The last comments show the 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
    

Para inicializar una variable de matriz escalonada mediante literales de matrizTo initialize a jagged array variable by using array literals

  • Anide los valores de objeto entre llaves ({}).Nest object values inside braces ({}). Aunque también puede anidar literales de matriz que especifican matrices de longitudes diferentes, en el caso de una matriz escalonada, asegúrese de que los literales de matriz anidados se incluyen entre paréntesis (()).Although you can also nest array literals that specify arrays of different lengths, in the case of a jagged array, make sure that the nested array literals are enclosed in parentheses (()). Los paréntesis fuerzan la evaluación de los literales de matriz anidados y las matrices resultantes se utilizan como valores iniciales de la matriz escalonada.The parentheses force the evaluation of the nested array literals, and the resulting arrays are used as the initial values of the jagged array. En el ejemplo de código siguiente se muestran dos ejemplos de inicialización de matriz escalonada.The following code example shows two examples of jagged array initialization.

    ' 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() {}}
    
  • En el ejemplo siguiente se recorre en iteración una matriz escalonada.The following example iterates through a jagged array. En una aplicación de consola de Windows escrita en Visual Basic, pegue el código dentro del método Sub Main().In a Windows console application that is written in Visual Basic, paste the code inside the Sub Main() method. Los últimos Comentarios del código muestran la salida.The last comments in the code show the 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
    

Vea tambiénSee also