Процедура — это группа операторов, которые вместе выполняют задачу при вызове. После выполнения процедуры элемент управления возвращается к оператору, вызывающему процедуру. VB.Net имеет два типа процедур —
-
функции
-
Sub процедуры или Subs
функции
Sub процедуры или Subs
Функции возвращают значение, тогда как Subs не возвращают значение.
Определение функции
Оператор Function используется для объявления имени, параметра и тела функции. Синтаксис для оператора Function —
[Modifiers] Function FunctionName [(ParameterList)] As ReturnType [Statements] End Function
Куда,
-
Модификаторы — укажите уровень доступа к функции; Возможные значения: Public, Private, Protected, Friend, Protected Friend и информация о перегрузке, переопределении, совместном использовании и теневом копировании.
-
FunctionName — указывает название функции
-
ParameterList — указывает список параметров
-
ReturnType — указывает тип данных переменной, которую возвращает функция
Модификаторы — укажите уровень доступа к функции; Возможные значения: Public, Private, Protected, Friend, Protected Friend и информация о перегрузке, переопределении, совместном использовании и теневом копировании.
FunctionName — указывает название функции
ParameterList — указывает список параметров
ReturnType — указывает тип данных переменной, которую возвращает функция
пример
В следующем фрагменте кода показана функция FindMax, которая принимает два целых значения и возвращает большее из двух значений.
Function FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer ' local variable declaration */ Dim result As Integer If (num1 > num2) Then result = num1 Else result = num2 End If FindMax = result End Function
Функция, возвращающая значение
В VB.Net функция может возвращать значение вызывающему коду двумя способами:
-
Используя инструкцию return
-
Присваивая значение имени функции
Используя инструкцию return
Присваивая значение имени функции
В следующем примере демонстрируется использование функции FindMax —
Module myfunctions Function FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer ' local variable declaration */ Dim result As Integer If (num1 > num2) Then result = num1 Else result = num2 End If FindMax = result End Function Sub Main() Dim a As Integer = 100 Dim b As Integer = 200 Dim res As Integer res = FindMax(a, b) Console.WriteLine("Max value is : {0}", res) Console.ReadLine() End Sub End Module
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Max value is : 200
Рекурсивная функция
Функция может вызывать сама себя. Это известно как рекурсия. Ниже приведен пример, который вычисляет факториал для данного числа с использованием рекурсивной функции:
Module myfunctions Function factorial(ByVal num As Integer) As Integer ' local variable declaration */ Dim result As Integer If (num = 1) Then Return 1 Else result = factorial(num - 1) * num Return result End If End Function Sub Main() 'calling the factorial method Console.WriteLine("Factorial of 6 is : {0}", factorial(6)) Console.WriteLine("Factorial of 7 is : {0}", factorial(7)) Console.WriteLine("Factorial of 8 is : {0}", factorial(8)) Console.ReadLine() End Sub End Module
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Factorial of 6 is: 720 Factorial of 7 is: 5040 Factorial of 8 is: 40320
Массивы Парам
Иногда, объявляя функцию или подпроцедуру, вы не уверены в количестве аргументов, переданных в качестве параметра. В это время вам могут помочь массивы параметров VB.Net (или массивы параметров).
Следующий пример демонстрирует это —
Module myparamfunc Function AddElements(ParamArray arr As Integer()) As Integer Dim sum As Integer = 0 Dim i As Integer = 0 For Each i In arr sum += i Next i Return sum End Function Sub Main() Dim sum As Integer sum = AddElements(512, 720, 250, 567, 889) Console.WriteLine("The sum is: {0}", sum) Console.ReadLine() End Sub End Module
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
The sum is: 2938
Передача массивов в качестве функциональных аргументов
Вы можете передать массив в качестве аргумента функции в VB.Net. Следующий пример демонстрирует это —
Module arrayParameter Function getAverage(ByVal arr As Integer(), ByVal size As Integer) As Double 'local variables Dim i As Integer Dim avg As Double Dim sum As Integer = 0 For i = 0 To size - 1 sum += arr(i) Next i avg = sum / size Return avg End Function Sub Main() ' an int array with 5 elements ' Dim balance As Integer() = {1000, 2, 3, 17, 50} Dim avg As Double 'pass pointer to the array as an argument avg = getAverage(balance, 5) ' output the returned value ' Console.WriteLine("Average value is: {0} ", avg) Console.ReadLine() End Sub End Module
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —