Visual Basic 6.0 Passing durch Wert Referenz Differenz
-
11-09-2019 - |
Frage
Im folgenden Code, erhalte ich einen Kompilierung-Fehler, weil i
als Variante behandelt wird. Der Fehler ist:. "ByRef Argument type mismatch"
Aber wenn ich die Parameter ByVal
passieren, gibt es kein Fehler, warum?
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
Lösung
ByVal autoconverts die Variante in eine ganze Zahl, weil sie einen Wert passiert. Während die ByRef versucht, eine Variable zu übergeben, die Sie in den Subroutinen ändern können. Im Wesentlichen ist I X im ByRef Szenario. VB6 nicht zulässt, dass Sie eine Variante als ganze Zahl ändern.
Andere Tipps
Wenn Sie mehrere Variablen in einer einzigen Zeile dh Dim i, j as Integer
j Dim wird als ganze Zahl gedimmt, aber i ist eine Variante. Sie müssen explizit jede Variable Art zu erklären. Ich ziehe es nur eine einzige Variable pro Zeile enthalten.
Dim i As Integer, j As Integer
oder
Dim i As Integer
Dim j As Integer
Das ist etwas, was ich gelernt, wenn ich eine andere Programmierer den Code geerbt