【问题标题】:Why is it always ByRef when I specify by ByVal?为什么当我通过 ByVal 指定时它总是 ByRef?
【发布时间】:2013-07-01 14:39:12
【问题描述】:

我正在查看 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 传递参数?

【问题讨论】:

  • 您似乎将通过引用传递变量与返回值的概念混淆了。如果您在sampleFunction 之后调用msgbox x,它将打印50。

标签: vbscript byref


【解决方案1】:

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

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

如果您在此处输入ByRef,那么x 将是 51。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多