Лекция: Массивы Visual Basic.NET

Массив представляет собой набор значений, логически связанных друг с другом, например, число учеников в каждом классе в школе.

С помощью массива, можно обратиться к этим связанным значениям тем же именем и использовать номер, вызвав индексом или подстрочным, который необходимо сообщить им врозь. Отдельные значения, называются элементами массива. Они начинаются от индекса 0 до наибольшее значение индекса.

Элементы массива в простом массиве

В следующем примере объявляется переменная массива для хранения числа учеников в каждом классе школы.

Dim students(6) As Integer

Массив students в предыдущем примере содержит 7 элементов. Индексы элементов лежат в диапазоне от 0 до 6. Использовать этот массив проще, чем 7 объявление переменных.

На следующем рисунке показан массив students. Для каждого элемента массива:

Индекс элемента представляет школьный класс (индекс 0 представляет детский сад).

Значение, содержащееся в элементе представляющее число студентов в этой ранге.

Элементы массива «учеников»

В следующем примере показано обращение к первому, второму и последнему элементу массива students.

Dim kindergarten As Integer = students(0)

Dim firstGrade As Integer = students(1)

Dim sixthGrade As Integer = students(6)

MsgBox(«Students in kindergarten = » & CStr(kindergarten))

MsgBox(«Students in first grade = » & CStr(firstGrade))

MsgBox(«Students in sixth grade = » & CStr(sixthGrade))

Можно ссылаться на массив в целом, используя только имя переменной массива без индексов.

Считается, что массив students в пользах предыдущего примера и одноразмерн один индекс. Массив, использующий более одного индекса, называется многомерным массивом. Дополнительные сведения см. в разделе остальная часть этих разделах и Размерность массивов в Visual Basic.

Создание массива

Указать размер массива можно несколькими способами. Можно указать размер если массив объявляется, как показано в следующем примере.

Dim cargoWeights(10) As Double

Dim atmospherePressures(2, 2, 4, 10) As Short

Dim inquiriesByYearMonthDay(20)()() As Byte

Можно также использовать предложение New, чтобы указать размер массива, когда он создал, как показано в следующем примере.

cargoWeights = New Double(10) {}

atmospherePressures = New Short(2, 2, 4, 10) {}

inquiriesByYearMonthDay = New Byte(20)()() {}

Если уже существует массив, можно переопределить его размер с помощью оператора Redim. Можно указать, что оператор Redim должна содержать значения, которые в массиве или можно указать, что она создает пустой массив. В следующем примере показаны различные варианты использования оператора Redim для изменения размера существующего массива.

' Assign a new array size and retain the current element values.

ReDim Preserve cargoWeights(20)

' Assign a new array size and retain only the first five element values.

ReDim Preserve cargoWeights(4)

' Assign a new array size and discard all current element values.

ReDim cargoWeights(15)

Дополнительные сведения см. в разделе Оператор ReDim (Visual Basic)

Объявление массива

Переменная массива объявляется так же, как любая другая переменная, с помощью инструкции Dim. Выполните типом или именем переменной с одним или несколькими парой скобок, чтобы показать, что он будет содержать массив, а не скаляр, переменная, содержащая одно значение.

В следующем примере объявляется переменная одномерного массива, добавив пару скобок после типа.

Dim cargoWeights() As Double

В следующем примере объявляется переменная многомерного массива путем добавления пару скобок после типа и установив запятые внутри скобок для отделения измерений.

Dim atmospherePressures(,,,) As Short

Для объявления переменной массива массивов добавьте пару скобок после имени переменной для каждого уровня вложенных массивов.

Dim inquiriesByYearMonthDay()()() As Byte

Предыдущие примеры объявляют переменные массива массивов. По-прежнему необходимо создать массив, инициализировать его и присвоить его переменной.

Сохранение значений в массиве

К любому местоположению в массиве можно получить доступ, используя индекс типа Integer. Можно сохранять и извлекать значения массива, ссылаясь на местоположение в массиве с помощью индекса места, приведенного в скобках. Индексы, индексация многомерных массивов разделяются запятыми (,). Необходим один индекс для каждого измерения массива. В следующем примере показаны некоторые операторы, которые сохраняют значения в массивах.

Dim i = 4

Dim j = 2

Dim numbers(10) As Integer

Dim matrix(5, 5) As Double

numbers(i + 1) = 0

matrix(3, j * 2) = j

В следующем примере показаны некоторые операторы, которые получают значения из массивов.

Dim v = 2

Dim i = 1

Dim j = 1

Dim k = 1

Dim wTotal As Double = 0.0

Dim sortedValues(5), rawValues(5), estimates(2, 2, 2) As Double

Dim lowestValue = sortedValues(0)

wTotal += (rawValues(v) ^ 2)

Dim firstGuess = estimates(i, j, k)

Заполнение массива начальными значениями

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

При создании массива с помощью литерала массива можно либо указать тип массива, либо использовать вывод типа для определения типа массива. В следующем коде показаны оба параметра.

Dim numbers = New Integer() {1, 2, 4, 8}

Dim doubles = {1.5, 2, 9.9, 18}

При использовании определение типа, тип массива определяется доминантным введите список значений, передаваемого для литерала массива. Главный тип уникальный тип, к которому все другие введите литерал массива может расширить. Если этот уникальный тип не может быть определен, то главный тип уникальный тип, к которому все другие типа в массив может уменьшить. Если ни один из указанных уникальных типов нельзя определить, главным типом будет Object. Например, если список значений, передаваемого в литерал массива содержит значения типа Integer, Long и Double, то результирующий массив типа Double. и Integer и Long расширяют только к Double. Поэтому Double является главным типом. Эти правила зависимости применяются к типам, которые в результате вывода становятся основанием для массивов, локальные переменные, определенные в члена класса. Хотя можно использовать литералы массива при создании переменных класс- уровня, нельзя использовать определение типа на уровне класса. В результате литералы массива, которые определены на уровне класса вывести значения, которые предоставляются для литерала массива как тип Object.

Можно явно задать тип элементов в массиве, создать с помощью литерала массива. В таком случае значения литерала массива должны расширяться до типа элементов массива. В следующем примере кода создается массив типа Double из списка целых чисел.

Dim values As Double() = {1, 2, 3, 4, 5, 6}

Вложенные литералы массива

Можно создать многомерный массив с помощью вложенных литералов массива. Вложенные литералы массива должны иметь измерение и число измерений или ряда, согласованным с итоговым массивом. В следующем примере кода создается двухмерный массив целых чисел с помощью литерала массива.

Dim grid = {{1, 2}, {3, 4}}

В предыдущем примере возникла ошибка минимум, если число элементов во вложенных литералах массива не соответствует. Ошибка возникла бы также случае явного объявления переменной массива, за исключением двухмерного. Примечание

Избежать ошибки при указании вложенных литералов массива с различными измерениями можно, заключив внутренние литералы массива в круглые скобки. Скобки принудительный выражение литерала массива должен вычисляться и результирующие значения используются с внешним литералом массива, как показано в следующем коде.

Dim values = {({1, 2}), ({3, 4, 5})}

При создании многомерного массива с помощью вложенных литералов массива можно использовать вывод типа. При использовании вывода типа выводимый тип является главным типом для всех значений всех литералов массива какого-либо уровня вложенности. В следующем примере кода создается двухмерный массив типа Double из значений типа Integer и Double.

Dim a = {{1, 2.0}, {3, 4}, {5, 6}, {7, 8}}

Массивы массивов

Массив, который содержит другие массивы как элементы в виде массива массивов или массива массивов. Массив массивов и каждый элемент массива массивов могут иметь одно или несколько измерений. Иногда структура данных в приложении является двухмерной, но не прямоугольной.

Следующий пример содержит массив месяцев, каждый элемент которого массив дней. Поскольку разные месяцы имеют различные число дней, элементы не формируют прямоугольный двумерный массив. Поэтому вместо многомерного массива используется массив массивов.

Dim sales()() As Double = New Double(11)() {}

For month As Integer = 0 To 11

Dim days As Integer =

DateTime.DaysInMonth(Year(Now), month + 1)

sales(month) = New Double(days — 1) {}

Next month

For month As Integer = 0 To 11

Dim upper = sales(month).GetUpperBound(0)

For day = 0 To upper

sales(month)(day) = (month * 100) + day

Next

Next

еще рефераты
Еще работы по информатике