Visual Basic 函数
函数,就是是在调用时一起执行任务的一组语句。
VB 有两种类型的程序:
- 函数
- 子程序或 Subs
注意: 函数返回一个值,而
Subs 不返回任何值。定义一个函数
Function 语句用于声明函数的名称,参数和函数体。Function 语句的语法是:
[Modifiers] Function FunctionName [(ParameterList)] As ReturnType[Statements]End Function
其中,
- Modifiers - 指定函数的访问级别; 可能的值有:
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 IntegerIf (num1 > num2) Thenresult = num1Elseresult = num2End IfFindMax = resultEnd Function
函数返回值
在 VB 中,函数可以通过两种方式将值返回给调用代码:
- 通过使用
return语句 - 通过赋值给函数名称
以下实例演示如何使用 FindMax 函数:
Module myfunctionsFunction FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer' local variable declaration */Dim result As IntegerIf (num1 > num2) Thenresult = num1Elseresult = num2End IfFindMax = resultEnd FunctionSub Main()Dim a As Integer = 100Dim b As Integer = 200Dim res As Integerres = FindMax(a, b)Console.WriteLine("Max value is : {0}", res)Console.ReadLine()End SubEnd Module
结果如下:
Max value is : 200
递归函数
一个函数可以调用它自己(自身),这被称为 递归函数。
以下是一个使用递归函数计算给定数字的阶乘的实例:
Module myfunctionsFunction factorial(ByVal num As Integer) As Integer' local variable declaration */Dim result As IntegerIf (num = 1) ThenReturn 1Elseresult = factorial(num - 1) * numReturn resultEnd IfEnd FunctionSub Main()'calling the factorial methodConsole.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 SubEnd Module
结果如下:
Factorial of 6 is : 720Factorial of 7 is : 5040Factorial of 8 is : 40320
参数数组
有时,在声明一个函数或子过程的时候,有时不确定传递的参数的数量。 VB 参数数组(或参数数组)可以解决这个问题。
以下实例演示了它的用法:
Module myparamfuncFunction AddElements(ParamArray arr As Integer()) As IntegerDim sum As Integer = 0Dim i As Integer = 0For Each i In arrsum += iNext iReturn sumEnd FunctionSub Main()Dim sum As Integersum = AddElements(512, 720, 250, 567, 889)Console.WriteLine("The sum is: {0}", sum)Console.ReadLine()End SubEnd Module
结果如下:
The sum is: 2619
将数组作为函数参数传递
可以在 VB 中传递一个数组作为函数的参数。
实例
Module arrayParameterFunction getAverage(ByVal arr As Integer(), ByVal size As Integer) As Double'local variablesDim i As IntegerDim avg As DoubleDim sum As Integer = 0For i = 0 To size - 1sum += arr(i)Next iavg = sum / sizeReturn avgEnd FunctionSub 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 argumentavg = getAverage(balance, 5)' output the returned value 'Console.WriteLine("Average value is: {0} ", avg)Console.ReadLine()End SubEnd Module
结果如下:
Average value is: 465.6