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

StackOverflow https://stackoverflow.com/questions/1099738

Вопрос

В следующем коде я получаю ошибку во время компиляции, потому что 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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top