문제

다음 코드에서는 컴파일 타임 오류가 발생합니다. 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

이것은 다른 프로그래머의 코드를 물려 받았을 때 배운 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top