Visual Basic 6.0 Передача по разнице ссылок на значения

В следующем коде я получаю ошибку времени компиляции, потому что i рассматривается как вариант. Ошибка: «Несоответствие типа аргумента по ссылке».

Но если я передаю параметры 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

person simplfuzz    schedule 08.07.2009    source источник


Ответы (2)


ByVal автоматически преобразует вариант в целое число, потому что он передает значение. Пока ByRef пытается передать переменную, которую вы можете изменить в подпрограммах. По сути, I - это X в сценарии ByRef. VB6 не позволяет изменять вариант как целое число.

person RS Conley    schedule 08.07.2009

Когда вы затемняете несколько переменных в одной строке, то есть Dim i, j as Integer j отображается как целое число, но i - это вариант. Вам необходимо явно объявить каждый тип переменной. Я предпочитаю включать только одну переменную в строку.

Dim i As Integer, j As Integer

or

Dim i As Integer
Dim j As Integer

Это то, что я узнал, когда унаследовал код другого программиста.

person jac    schedule 08.07.2009