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 автоматически преобразует вариант в целое число, поскольку он передает значение.В то время как ByRef пытается передать переменную, которую вы можете изменить в подпрограммах.По сути, I - это X в сценарии ByRef.VB6 не позволяет вам изменять вариант как целое число.
Другие советы
Когда вы затемняете несколько переменных в одной строке, т.е. Dim i, j as Integer
j затемняется как целое число, но i - это вариант.Вам нужно явно объявлять каждый тип переменной.Я предпочитаю включать только одну переменную в строку.
Dim i As Integer, j As Integer
или
Dim i As Integer
Dim j As Integer
Это то, чему я научился, когда унаследовал код другого программиста