我正在浏览ByVal和ByRef through MSDN,当我们通过ByVal传递参数时,这些值总是由ByVal传递。
在我的下面示例中,它总是通过ByRef传递。我做错了什么?
Function sampleFunction(ByVal val) 'Even though here i am passing as ByVal it is taking as ByRef
val=val+1
sampleFunction=val
End Function
x=50
temp=sampleFunction(x)
msgbox temp 'prints 51
如何从函数返回时通过ByVal传递参数?
答案 0 :(得分:3)
您的功能正在接受50
的值。然后将变量val
递增1,以便该变量现在为51
。然后它将返回值设置为val
的值,即51。
因此,您的temp
变量会被分配给返回值,即51.但是,您的x
变量仍然是50
,因为只有值被传递到function - x
参数未被修改。
如果你在这里做了ByRef
,那么x
就是51。