Практическое руководство. Инициализация переменной массива в Visual Basic
Инициализировать переменную массива, включив литерал массива в New
предложение и указав начальные значения массива. Можно указать тип или разрешить вывод из значений в литерале массива. Дополнительные сведения о выводе типа см. в разделе "Заполнение массива начальными значениями" в массивах.
Инициализация переменной массива с помощью литерала массива
В
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)
, ,(1,0)
(0,2)
и(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