我努力理解按值传递和引用传递VB6。 我完全理解像.NET和Java面向对象编程语言的这些概念(我认识到,Java没有按引用传递)。 看看下面的代码:
Private Sub Form_Load()
Dim Test As Integer
Test = 1
TestFunction Test 'line 5
MsgBox (Test)
End Sub
Private Sub TestFunction(ByVal i As Integer)
i = i + 1
End Sub
当我把括号试验第5行,然后在消息框中打印1,因为我期望的那样。 现在来看看下面的代码:
Private Sub Form_Load()
Dim Test As Integer
Test = 1
TestFunction Test 'line 5
MsgBox Test
End Sub
Private Sub TestFunction(ByRef i As Integer)
i = i + 1
End Sub
消息框打印2为我所期望的。 但是,如果加上括号5号线则消息框打印1,因为我不希望。 看来,调用函数可以通过值传递即使在被调用的函数所定义的变量是为ByRef。 这似乎不是这样的情况,反之亦然,也就是说,如果被调用函数与定义以ByVal那么它将永远是BYVAL(即使周围有调用函数变量没有括号)变量的签名。 什么是在VB6这背后的想法? 我意识到这是在VB6一个基本的问题,但它已经让我感到困惑。 我看过MSDN文档,我意识到,这是所有真正的,但是它并不能解释其背后的原因。