Visual Basic 6.0传递值参考差异

时间:2009-07-08 18:16:14

标签: vb6 pass-by-reference pass-by-value

在以下代码中,我收到编译时错误,因为i被视为变体。错误是:“ByRef Argument type mismatch。”。

但是如果我传递参数ByVal,那么为什么没有错误?

Private Sub Command2_Click()
    Dim i, j As Integer
    i = 5
    j = 7
    Call Swap(i, j)
End Sub

Public Sub Swap(ByRef X As Integer, ByRef Y As Integer)
    Dim tmp As Integer
    tmp = X
    X = Y
    Y = tmp
End Sub

2 个答案:

答案 0 :(得分:6)

当您在一行上调暗几个变量时,Dim i, j as Integer j将变为整数,但我是一个变体。您需要显式声明每个变量类型。我更喜欢每行只包含一个变量。

Dim i As Integer, j As Integer

Dim i As Integer
Dim j As Integer

这是我在继承另一个程序员代码时学到的东西

答案 1 :(得分:3)

ByVal将变量自动转换为整数,因为它传递了一个值。而ByRef试图传递一个可以在子程序中修改的变量。本质上,我在ByRef场景中是X. VB6不允许您将变体修改为整数。