Практическое руководство. Инициализация переменной массива в Visual Basic

Для инициализации переменной массива путем включения литерала массива в предложение New и задание начальных значений массива. Можно указать тип или разрешить его наследование от значений в литерале массива. Дополнительные сведения о выводе типа см. в подразделе "Заполнение массива начальными значениями" раздела Массивы в Visual Basic.

Инициализация переменной массива с помощью литерала массива

  • Либо в предложении New, либо при задании значения массива укажите в фигурных скобках ({}) значения элементов. В следующем примере показано несколько способов объявить, создать и инициализировать переменную, которая должна содержать массив элементов типа 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 содержат начальные значения. Если указать верхнюю границу и значения, необходимо включить значение для каждого элемента с индексами от 0 до верхней границы.

    Обратите внимание, что нет необходимости указывать индекс верхней границы, если значения элементов указываются в литерале массива. Если верхняя граница не задана, размер массива выводится на основе числа значений в литерале массива.

Инициализация переменной многомерного массива с помощью литералов массива

  • Поместите значения в фигурные скобки ({}). Убедитесь, что вложенные литералы массива все подразумевают массивы одного типа и длины. Далее приведен код с несколькими примерами инициализации многомерного массива.

    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}}}
    
  • Можно явно задать границы массива или не задавать их, тогда компилятор выведет границы массива на основе значений в литерале массива. Если указать и верхние границы и значения, необходимо включить значение для каждого элемента от индекса 0 до верхней границы каждого измерения. В следующем примере показано несколько способов объявить, создать и инициализировать переменную, которая должна содержать двухмерный массив элементов типа 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). Каждое место массива содержит значение 10.

  • Следующий пример выполняет перебор многомерного массива. В консольном приложении Windows, написанном на Visual Basic, вставьте код в методе Sub Main(). Последние комментарии показывают результат.

    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
    

Инициализация переменной массива массивов с помощью литералов массива

  • Поместите значения объектов в фигурные скобки ({}). Хотя можно также вложить литералы массива, задающие массивы разной длины, в случае массива массивов следует убедиться, что вложенные литералы массива заключены в скобки (()). Скобки задают принудительное вычисление вложенных литералов массива, результирующие массивы используются как начальные значения массива массивов. Далее приведен код с двумя примерами инициализации массива массивов.

    ' 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() {}}
    
  • Следующий пример выполняет перебор массив массивов. В консольном приложении Windows, написанном на Visual Basic, вставьте код в методе Sub Main(). Последние комментарии в коде показывают результат.

    ' 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
    

См. также

Задачи

Устранение неполадок, связанных с массивами (Visual Basic)

Другие ресурсы

Массивы в Visual Basic