1

我正在通过 MSDN浏览 ByVal 和 ByRef ,其中提到当我们通过 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 传递参数?

4

1 回答 1

3

您的函数正在接受 的值50。然后它将变量val加一,因此该变量是 now 51。然后它将返回值设置为 的值val,即 51。

因此,您的temp变量被分配给返回值,即 51。x但是,您的变量仍然是50,因为只有值被传递给函数 -x参数没有被修改。

如果你会在ByRef这里做一个,那么x就会是 51。

于 2013-07-01T14:44:22.870 回答