Function 过程 (Visual Basic)

Function 过程是由 FunctionEnd Function 语句括起来的一系列 Visual Basic 语句。 Function 过程执行任务,然后将控制返回给调用代码。 当它返回控制时,它还会将值返回给调用代码。

每次调用该过程时,它的语句都会运行,从 Function 语句后面的第一个可执行语句开始运行,以第一个遇到的 End FunctionExit FunctionReturn 语句结束。

你可以在模块、类或结构中定义 Function 过程。 它默认是 Public 的,这意味着你可以从有权访问在其中定义它的模块、类或结构的应用程序中的任何位置调用它。

Function 过程可以采用由调用代码传递给它的参数,例如常量、变量或表达式。

声明语法

声明 Function 过程的语法如下:

[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
    [Statements]
End Function

修饰符可以指定有关重载、替代、共享和影子处理的访问级别和信息。 有关详细信息,请参阅 Function 语句

声明每个参数的方式与处理 Sub 过程的方式相同。

数据类型

每个 Function 过程都有一种数据类型,就像每个变量一样。 此数据类型是由 Function 语句中的 As 子句指定的,它确定函数返回给调用代码的值的数据类型。 下面的示例声明阐释了这一点。

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

有关详细信息,请参阅 Function 语句中的“组成部分”。

返回值

Function 过程返回到调用代码的值称为其返回值。 此过程通过以下两种方式之一返回此值:

  • 它使用 Return 语句来指定返回值,并立即将控制返回给调用程序。 下面的示例对此进行了演示。

    Function FunctionName [(ParameterList)] As ReturnType
        ' The following statement immediately transfers control back
        ' to the calling code and returns the value of Expression.
        Return Expression
    End Function
    
  • 它在此过程的一条或多条语句中为其自己的函数名称分配值。 直到执行 Exit FunctionEnd Function 语句,控制才会返回到调用程序。 下面的示例对此进行了演示。

    Function FunctionName [(ParameterList)] As ReturnType
        ' The following statement does not transfer control back to the calling code.
        FunctionName = Expression
        ' When control returns to the calling code, Expression is the return value.
    End Function
    

将返回值分配给函数名称的优势在于,在遇到 Exit FunctionEnd Function 语句之前,控制不会从过程返回。 这使你可以分配一个初步值并在以后必要时对它进行调整。

有关返回值的详细信息,请参阅 Function 语句。 有关返回数组的信息,请参阅数组

调用语法

通过将 Function 过程的名称和参数包含在赋值语句的右侧或表达式中来调用该过程。 必须为所有非可选参数提供值,并且必须将参数列表用括号括起来。 如果未提供参数,可选择省略括号。

调用 Function 过程的语法如下。

lvalue=functionname[(argumentlist)]

If ((functionname[(argumentlist)] / 3) <=expression) Then

调用 Function 过程时,无需使用其返回值。 否则,将执行该函数的所有操作,但将忽略返回值。 MsgBox 通常是以这种方式调用的。

声明和调用的演示

下面的 Function 过程根据其他两边的值计算直角三角形的最长边(斜边)。

Function Hypotenuse(side1 As Double, side2 As Double) As Double
    Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function

下面的示例显示了对 hypotenuse 的一个典型调用。

Dim testLength, testHypotenuse As Double
testHypotenuse = Hypotenuse(testLength, 10.7)

另请参阅