Учебники

VB.Net — Функции

Процедура — это группа операторов, которые вместе выполняют задачу при вызове. После выполнения процедуры элемент управления возвращается к оператору, вызывающему процедуру. 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

Live Demo

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

Рекурсивная функция

Функция может вызывать сама себя. Это известно как рекурсия. Ниже приведен пример, который вычисляет факториал для данного числа с использованием рекурсивной функции:

Live Demo

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 (или массивы параметров).

Следующий пример демонстрирует это —

Live Demo

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. Следующий пример демонстрирует это —

Live Demo

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

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —