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는 BYREF 시나리오에서 X입니다. VB6은 변형을 정수로 수정할 수 없습니다.
다른 팁
한 줄에서 여러 변수를 어둡게하면 즉 Dim i, j as Integer
J는 정수로 희미하지만 변형입니다. 각 변수 유형을 명시 적으로 선언해야합니다. 줄 당 단일 변수 만 포함하는 것이 좋습니다.
Dim i As Integer, j As Integer
또는
Dim i As Integer
Dim j As Integer
이것은 다른 프로그래머의 코드를 물려 받았을 때 배운 것입니다.
제휴하지 않습니다 StackOverflow