1

我有以下程序调用的开始

strReturn = OrderCreate(strGen8, _
                        strUID, _
                        Order, _
                        boolRecapFlag, _

在接收我们拥有的参数的函数上..

function OrderCreate(strCoDiv, strUID, byRef Order, boolRecap, strBillFirst, etc.

因为我找不到将订单值传递到程序中的任何地方。我是否可以假设 ByRef 可以将数据带出程序?使用 Order 变量名?

4

3 回答 3

4

参数可以通过两种方式传递给函数:通过引用 (ByRef) 或通过值 (ByVal)。在 VBScript 中,默认方法是 ByRef。

当您通过引用传递一个值时,您传递的是一个变量在内存中寻址的引用。这意味着一旦您的函数存在,您在函数中所做的任何更改都将持续存在。它还可以用于帮助控制脚本管理内存的方式,因为存储在变量中的数据只在内存中写入一次。

按值传递参数会在新范围内的内存中创建变量的副本。在新范围内对此信息所做的更改不会影响其他范围内的数据。

于 2012-02-27T19:59:22.087 回答
1

byRef表示您正在传递对原始变量的引用。因此,如果您更改函数中的值,它会反映在原始值上

这与传递值并制作独立副本的byVal不同。

于 2012-02-27T19:54:15.527 回答
1

byref 和 byval 的区别

dim my_org_age,my_wife_org_age

my_org_age = 43
my_wife_org_age = 43

Call make_our_ages_younger(my_org_age, my_wife_org_age)

在上面的 sub 之后(注意它甚至不是一个函数!),my_org_age 和 my_wife_org_age 将年轻十岁!

那是因为这里对应的函数通过REf获取它的args

sub make_our_ages_younger(byref my_age,byref her_age)
    my_age = my_Age-10
    her_age = her_age-10
end sub

现在,如果您从中删除“byRef”字样,然后运行

Call make_our_ages_younger(my_org_age, my_wife_org_age)

你会注意到我们的年龄不会改变。

看到 byRef 现在的区别了吗?

高温高压

于 2012-02-28T14:42:26.703 回答