Передача массивов функциям и процедурам. Процедуры и функции с необязательными аргументами.
В VB.NET, как и в прежних версиях VB, существуют удобные средства для работы с одномерными и многомерными массивами в процедурах и функциях. Впрочем, существуют некоторые нюансы, обусловленные передачей по ссылке и по значению; мы рассмотрим их в главе 4. Перебор содержимого массива осуществляется конструкцией For Each или (более распространенный вариант) стандартным циклом For с вычислением верхней границы при помощи функции UBound (). Ниже приведен пример функции поиска максимального элемента в массиве:
Function FindMax(ByVa1 a() As Integer Dim finish As Integer = UBound(a) Dim max As Integer = a(0) Dim i As Integer For i = 0 To finish If a(i) > max Then max = a(i) Next i Return max End Function
Обобщенная форма вызова UBound(имя_массива, I) возвращает верхнюю границу по 1-му измерению массива. Для одномерных массивов (списков) параметр 1 является необязательным.
Примечание
Для проверки также можно воспользоваться методом Length, реализованным в классе массива, но этот метод возвращает количество элементов в массиве вместо верхней границы (в многомерных массивах эти величины не совпадают).
Процедуры и функции с необязательными аргументами
В VB.NET сохранена возможность определения процедур и функций с необязательными аргументами, но в отличие от VB6 для каждого необязательного параметра должно быть указано значение по умолчанию. Следующий пример демонстрирует синтаксис объявления необязательных параметров:
Sub ProcessAddress(TheName As String, Address As String. City As String. State As String. ZipCode As String. Optional ZipPlus4 As String = "0000")
В данном примере последний параметр является необязательным (Optional) и по умолчанию равен "0000".
Примечание
В главе 4 описана перегрузка (overloading) – другой способ определения функций с необязательными параметрами.
VB.NET также позволяет определять процедуры и функции с произвольным количеством аргументов. Для этого в качестве параметра передается массив с ключевым словом РаramАrrау, как в следующем примере:
Function AddThemUp(ByVal ParamArray stuff() As Double) As Double Dim total As Double = 0 Dim Number As Double = 0 Dim I As Integer For I = 0 To UBound(stuff) total = total + stuff(I) Next Return total End Function
Пример использования функции:
x = AddThemUp(3, 4. 5. 6)
В результате переменной х присваивается значение 18.