Практическое руководство. Инициализация переменной массива в Visual BasicHow to: Initialize an Array Variable in Visual Basic

Инициализация переменной массива путем включения литерала массива в New предложения и задание начальных значений массива.You initialize an array variable by including an array literal in a New clause and specifying the initial values of the array. Можно указать тип или разрешить его наследование от значений в литерале массива.You can either specify the type or allow it to be inferred from the values in the array literal. Дополнительные сведения о том, как определить тип, см. в разделе «Заполнение массива начальными значениями» в массивы.For more information about how the type is inferred, see "Populating an Array with Initial Values" in Arrays.

Инициализация переменной массива с помощью литерала массиваTo initialize an array variable by using an array literal

  • В New предложения, или когда вы присваиваете значение массива, значения элементов внутри фигурных скобок ({}).Either in the New clause, or when you assign the array value, supply the element values inside braces ({}). В следующем примере показано несколько способов объявить, создать и инициализировать переменную, должна содержать массив, который содержит элементы типа 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}
    

    После выполнения каждого из операторов, созданный массив имеет длину 3, и элементы с индексом 0 до 2 содержат начальные значения.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. Если указать верхнюю границу и значения, необходимо включить значение для каждого элемента от индекса 0 до верхней границы.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.

    Обратите внимание, что не нужно указывать индекс верхней границы в том случае, если указываются значения элементов в литерале массива.Notice that you do not have to specify the index upper bound if you supply element values in an array literal. Если верхняя граница не указан, размер массива выводится на основе числа значений в литерале массива.If no upper bound is specified, the size of the array is inferred based on the number of values in the array literal.

Инициализация переменной многомерного массива с помощью литералов массиваTo initialize a multidimensional array variable by using array literals

  • Поместите значения в фигурные скобки ({}) в фигурных скобках.Nest values inside braces ({}) within braces. Убедитесь, что вложенные литералы массива все подразумевают массивы одного типа и длины.Ensure that the nested array literals all infer as arrays of the same type and length. В следующем примере кода показано несколько примеров инициализации многомерного массива.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}}}
    
  • Можно явно задать границы массива или не указывать их и компилятор выведет границы массива, на основе значений в литерале массива.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. Если указать и верхние границы и значения, необходимо включить значение для каждого элемента от индекса 0 до верхней границы каждого измерения.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. В следующем примере показано несколько способов объявить, создать и инициализировать переменную, должна содержать двухмерный массив, который содержит элементы типа 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}}
    

    После выполнения каждого из операторов созданный массив содержит шесть инициализированных элементов с индексами (0,0), (0,1), (0,2), (1,0), (1,1), и (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). Каждое место массива содержит значение 10.Each array location contains the value 10.

  • Следующий пример выполняет перебор многомерного массива.The following example iterates through a multidimensional array. В консольном приложении Windows, написанного на Visual Basic, вставьте в него код Sub Main() метод.In a Windows console application that is written in Visual Basic, paste the code inside the Sub Main() method. Последние комментарии показывают результат.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
    

Для инициализации переменной массива массивов с помощью литералов массиваTo initialize a jagged array variable by using array literals

  • Поместите значения объектов в фигурные скобки ({}).Nest object values inside braces ({}). Несмотря на то, что можно также вложить литералы массива, задающие массивы разной длины, в случае массива массивов следует убедиться, что вложенные литералы массива заключены в круглые скобки (()).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 (()). Скобки задают принудительное вычисление вложенных литералов массива, а результирующие массивы используются как начальные значения массива массивов.The parentheses force the evaluation of the nested array literals, and the resulting arrays are used as the initial values of the jagged array. В следующем примере кода показаны два примера инициализации массива массивов.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() {}}
    
  • Приведенный ниже пример проходит через массив массивов.The following example iterates through a jagged array. В консольном приложении Windows, написанного на Visual Basic, вставьте в него код Sub Main() метод.In a Windows console application that is written in Visual Basic, paste the code inside the Sub Main() method. Последние комментарии в коде показывают результат.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
    

См. такжеSee also