【发布时间】:2009-10-08 13:33:17
【问题描述】:
我在 VBScript 中遇到了一些奇怪的问题。在编写过程中我希望通过引用传递参数时,调用此过程的方式会改变传递参数的方式!
这是一个例子:
Sub IncrementByRef(ByRef Value)
Value = Value + 1
End Sub
Sub IncrementByVal(ByVal Value)
Value = Value + 1
End Sub
Dim Num
Num = 10
WScript.Echo "Num : " & Num
IncrementByRef(Num) : WScript.Echo "IncrementByRef(Num) : " & Num
IncrementByRef Num : WScript.Echo "IncrementByRef Num : " & Num
IncrementByVal(Num) : WScript.Echo "IncrementByVal(Num) : " & Num
IncrementByVal Num : WScript.Echo "IncrementByVal Num : " & Num
这是输出:
U:\>cscript //nologo byrefbyval.vbs
Num : 10
IncrementByRef(Num) : 10
IncrementByRef Num : 11
IncrementByVal(Num) : 11
IncrementByVal Num : 11
U:\>
当指定参数通过 ByVal 传递时,它按预期工作,无论过程调用方式如何。 但是当指定参数通过 ByRef 传递时,如果以这种方式调用过程,它将按预期工作:
IncrementByRef Num
但不是这样:
IncrementByRef(Num)
这对我来说似乎很奇怪。有没有办法确保参数通过 ByRef 传递,无论过程如何调用?
【问题讨论】:
标签: vbscript