ByVal
 
声明说明符以显式传递参数的值

语法

ByVal param As datatype

用法

[ Declare ] { Sub | Function } proc_name ( ByVal param As datatype )

说明

在声明语句的参数列表中,ByVal将导致变量的副本通过其值传递给过程(例如,子或函数)。

这意味着如果变量x 的值被传递,则原始变量x 不会以任何方式进行修改;但是,如果变量通过ByRef,原始变量x 的值可以被调用函数修改。

对面ByRef.

Byref参数函数结果的上下文中也使用了ByVal关键字,其中可以用于显式覆盖副引用语义,以便将指针原样传递给{参数或函数结果。以供参考:
例子

Sub MySub(ByVal value As Integer)
    value += 1
End Sub

Dim MyVar As Integer

MyVar = 1
Print "MyVar:"; MyVar '输出= 1
MySub MyVar
Print "MyVar:"; MyVar 'output = 1, because byval won't更改全局传递的值。
Sleep
End


方言差异

  • -lang fb 方言中,ByVal是除和用户定义的类型{999796006之外的所有内置类型的默认参数传递约定},默认情况下通过ByRef.
  • -lang qb -lang fblite 方言中,ByRef是默认参数传递约定。

与QB差别

  • QB在非基本子例程的声明中仅使用ByVal

参考