Многомерные массивы. Процедуры и функции.
Массивы не ограничиваются одним измерением. Допустим, вы хотите сохранить таблицу умножения в матричном виде. Примерное решение может выглядеть так:
Dim mulTable(11.11) As Integer ' Создает массив 12x12 Dim i As Integer, j As Integer For i = 0 To 11 For j = 0 To 11 mulTable(i.j) = (i+l)*(j+l) Next j Next i
Размеры массивов в VB.NET могут изменяться, но количество измерений должно оставаться постоянным.
Многомерный массив с неопределенным количеством элементов объявляется при помощи запятых. Следующий пример показывает, как объявить трехмерный массив:
Dim salesByDivision(,,) As Decimal
Команда ReDim задает или изменяет количество элементов в каждом измерении, но размерность массива не изменяется.
Примечание
При сохранении содержимого массива командой ReDim Preserve допускается изменение количества элементов только в последнем измерении массива.
Процедуры и функции
Раньше выбор между процедурой (Sub) и функцией (Function) определялся простым критерием: если вы собирались использовать возвращаемое значение, следовало выбирать функцию, а если нет – процедуру. Мы рекомендуем придерживаться этой модели, хотя ничто не мешает проигнорировать возвращаемое значение функции. В объектно-ориентированных программах функции и процедуры обычно включаются в классы и называются методами.
В VB.NET, как и во многих языках программирования, существуют два способа передачи параметров функциям и процедурам: передача по ссылке и передача по значению. Когда параметр передается по ссылке, его изменения внутри функции приведут к изменению исходного аргумента после выхода из функции. По умолчанию в VB.NET параметры передаются по значению (а в VB6 – по ссылке).
Примечание
Было бы наивно полагать, что при передаче по значению исходный аргумент после выхода из функции всегда сохраняет прежнее значение. В VB.NET состояние объекта может измениться даже в том случае, если он передавался по значению. В главе 4 эта ситуация, часто приводящая к возникновению хитроумных ошибок, рассматривается более подробно.