バリュー参考差によって、Visual Basic 6.0の受け渡し
-
11-09-2019 - |
質問
i
は変種として扱われるため、次のコードでは、私は、コンパイル時にエラーが発生します。エラーは次のとおりです。の
"のByRef引数の型の不一致。"。しかし、私は、パラメータ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
解決
それは値を渡しているので
ByValの整数にバリアントをautoconverts。 ByRefのは、あなたがサブルーチンで変更することができ、変数を渡すようにしようとしていますが。本質的には私はByRefのシナリオではXです。 VB6を使用すると、整数としてバリアントを変更することはできません。
他のヒント
あなたは、単一の行すなわち
Dim i, j as Integer
jの上で、いくつかの変数を暗くすると整数として薄暗く、しかし、私は変です。あなたは明示的に各変数の型を宣言する必要があります。私は、1行に1つだけの変数を含めることを好むます。
Dim i As Integer, j As Integer
または
Dim i As Integer
Dim j As Integer
これは、私が
他のプログラマのコードを継承したときに、私が学んだものです所属していません StackOverflow