通过引用传递参数
增加
BYREF关键字主要是为了帮助人们移植VB工程。
它不是通过传递指针来工作,但是在函数结束时不释放参数的值,
并放入通过引用传递的表达式。
换句话说:
GetData(ByRef sResult)
实际上像下面这样做:
GetData(sResult) ' 压sResult进入堆栈,作为第一个参数
... ' 在GetData结束后不释放堆栈
sResult = ... ' 从堆栈取值并放入sResult
注意:这样, 能通过引用传递任何赋值表达式。
GetData(ByRef MyCollectionOfLabels["key"].Text)
在函数声明时,
ByRef
意味着
可以 通过引用传递参数,
但是不是必须这样做。
在函数调用时,
ByRef
意味着
希望 参数被通过引用传递。
作为Gambas的链接是完全动态的,
解释器在运行时检查是否函数真的允许使用
ByRef
。
这是为什么
ByRef
在函数声明和函数调用中都必须指定的原因。
ByRef
使函数调用的速度变慢,
因为需要值从堆栈恢复的检查和添加过程。
目前JIT编译器不支持 ByRef
。