2013-07-01 1 views
1

ByVal 및 ByRef through MSDN 통해 ByVal에 의해 인수를 전달할 때 언급 한 값은 항상 ByVal에 의해 전달됩니다.ByVal로 지정할 때 항상 ByRef가되는 이유는 무엇입니까?

아래 예제에서 항상 ByRef를 지나가고 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

Function sampleFunction(ByVal val) 'Even though here i am passing as ByVal it is taking as ByRef 
     val=val+1 
     sampleFunction=val 
    End Function 

    x=50 
    temp=sampleFunction(x) 
    msgbox temp 'prints 51 

함수에서 반환 할 때 ByVal로 인수를 전달할 수 있습니까?

+0

(51)을했을 것이다. 'sampleFunction' 다음에'msgbox x'를 호출하면 50을 출력합니다. – dlev

답변

3

사용자의 기능은 50의 값을 승인합니다. 그런 다음 변수 val을 1 씩 증가시켜 그 변수가 이제 51이되도록합니다. 그것은 다음 temp 변수가 51 귀하의 x 변수는, 그러나, 여전히 50 될 것입니다 반환 값에 할당됩니다, 따라서 51

입니다 val의 값으로 반환 값을 설정에만 때문에 값이 함수에 전달되었습니다. x 매개 변수가 수정되지 않았습니다. 당신이 여기에 ByRef을했을 경우

, 다음 x 당신은 반환 값의 개념 참조로 혼란을 통과 변수가 될 것으로 보인다

관련 문제