在下面的代码中,我得到一个编译时错误:
ByRef Argument type mismatch.
但如果我将i的声明改为:
Dim i As Integer
Dim j As Integer
错误消失了。为什么呢?
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
答案 0 :(得分:9)
这是因为当您在VB6中执行此操作时:
Dim i, j As Integer
它将编译器读取为
Dim i As Variant, j As Integer
导致您的类型不匹配。正如你所说的那样,答案就是在代码中声明两者:
Dim i As Integer
Dim j As Integer
或者在单行上,la:
Dim i As Integer, j As Integer
答案 1 :(得分:3)
在VB 6中,我被认为是一个变体,而不是你所描述的整数。
这是描述行为的article。