2013-07-01 76 views
1

我正在通过ByVal和ByRef through MSDN,其中提到了当我们通过ByVal传递参数时,值总是由ByVal传递。ByVal指定时,为什么总是ByRef?

在我的下面的例子总是通过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

你似乎是用一个返回值的概念混淆引用传递变量。如果你在'sampleFunction'之后调用'msgbox x',它将打印50。 – dlev

回答

3

您的功能正在接受50的值。然后将变量val递增1,以便该变量现在为51。然后,它的返回值设置到val的价值,这是51

因此,您temp变量被分配到的返回值,这是51你x变量,但是,仍然会50,因为只有值传递到函数中 - x参数未被修改。

如果你想在这里做一个ByRef,然后x本来51

相关问题