Visual Basic 函数

函数,就是是在调用时一起执行任务的一组语句。

VB 有两种类型的程序:

  • 函数
  • 子程序或 Subs
注意: 函数返回一个值,而 Subs 不返回任何值。

定义一个函数

Function 语句用于声明函数的名称,参数和函数体。Function 语句的语法是:

  1. [Modifiers] Function FunctionName [(ParameterList)] As ReturnType
  2. [Statements]
  3. End Function

其中,

  • Modifiers - 指定函数的访问级别; 可能的值有:Public, Private, Protected, Friend, Protected Friend 以及有关重载,重写,共享的信息。
  • FunctionName - 表示函数的名称。
  • ParameterList - 指定参数的列表。
  • ReturnType - 指定函数返回的变量的数据类型。

实例

下面的代码片段显示了一个函数:FindMax,它取两个整数值作为参数并返回两个中较大的那一个:

  1. Function FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer
  2. ' local variable declaration */
  3. Dim result As Integer
  4. If (num1 > num2) Then
  5. result = num1
  6. Else
  7. result = num2
  8. End If
  9. FindMax = result
  10. End Function

函数返回值

在 VB 中,函数可以通过两种方式将值返回给调用代码:

  • 通过使用 return 语句
  • 通过赋值给函数名称

以下实例演示如何使用 FindMax 函数:

  1. Module myfunctions
  2. Function FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer
  3. ' local variable declaration */
  4. Dim result As Integer
  5. If (num1 > num2) Then
  6. result = num1
  7. Else
  8. result = num2
  9. End If
  10. FindMax = result
  11. End Function
  12. Sub Main()
  13. Dim a As Integer = 100
  14. Dim b As Integer = 200
  15. Dim res As Integer
  16. res = FindMax(a, b)
  17. Console.WriteLine("Max value is : {0}", res)
  18. Console.ReadLine()
  19. End Sub
  20. End Module

结果如下:

  1. Max value is : 200

递归函数

一个函数可以调用它自己(自身),这被称为 递归函数

以下是一个使用递归函数计算给定数字的阶乘的实例:

  1. Module myfunctions
  2. Function factorial(ByVal num As Integer) As Integer
  3. ' local variable declaration */
  4. Dim result As Integer
  5. If (num = 1) Then
  6. Return 1
  7. Else
  8. result = factorial(num - 1) * num
  9. Return result
  10. End If
  11. End Function
  12. Sub Main()
  13. 'calling the factorial method
  14. Console.WriteLine("Factorial of 6 is : {0}", factorial(6))
  15. Console.WriteLine("Factorial of 7 is : {0}", factorial(7))
  16. Console.WriteLine("Factorial of 8 is : {0}", factorial(8))
  17. Console.ReadLine()
  18. End Sub
  19. End Module

结果如下:

  1. Factorial of 6 is : 720
  2. Factorial of 7 is : 5040
  3. Factorial of 8 is : 40320

参数数组

有时,在声明一个函数或子过程的时候,有时不确定传递的参数的数量。 VB 参数数组(或参数数组)可以解决这个问题。

以下实例演示了它的用法:

  1. Module myparamfunc
  2. Function AddElements(ParamArray arr As Integer()) As Integer
  3. Dim sum As Integer = 0
  4. Dim i As Integer = 0
  5. For Each i In arr
  6. sum += i
  7. Next i
  8. Return sum
  9. End Function
  10. Sub Main()
  11. Dim sum As Integer
  12. sum = AddElements(512, 720, 250, 567, 889)
  13. Console.WriteLine("The sum is: {0}", sum)
  14. Console.ReadLine()
  15. End Sub
  16. End Module

结果如下:

  1. The sum is: 2619

将数组作为函数参数传递

可以在 VB 中传递一个数组作为函数的参数。

实例
  1. Module arrayParameter
  2. Function getAverage(ByVal arr As Integer(), ByVal size As Integer) As Double
  3. 'local variables
  4. Dim i As Integer
  5. Dim avg As Double
  6. Dim sum As Integer = 0
  7. For i = 0 To size - 1
  8. sum += arr(i)
  9. Next i
  10. avg = sum / size
  11. Return avg
  12. End Function
  13. Sub Main()
  14. ' an int array with 5 elements '
  15. Dim balance As Integer() = {1000, 2, 3, 17, 50}
  16. Dim avg As Double
  17. 'pass pointer to the array as an argument
  18. avg = getAverage(balance, 5)
  19. ' output the returned value '
  20. Console.WriteLine("Average value is: {0} ", avg)
  21. Console.ReadLine()
  22. End Sub
  23. End Module

结果如下:

  1. Average value is: 465.6