ByRef / ByVal

VB 2018. 5. 24. 12:50

By Reference / By Value

프로시저 작성 시 인수를 기입할 때 다음과 같이 입력하는 것이 일반적하지만 사실 인수의 이름 앞에는 'ByRef'가 생략되어있습니다. 


한줄로 나타내면 

ByVal (인수의 값 건네기) : 인수 값의 복사를 건넵니다.

ByRef (인수의 참조 건네기) : 인수 값을 직접 건네는 것이 아니라, 인수가 저장된 메모리 어드레스를 나타내는 지표(포인터)를 건넵니다


전달 메커니즘의 선택

두 전달 메커니즘 중 하나를 선택할 때 가장 중요한 기준은 호출 변수의 변경 가능 여부입니다. 

ByRef로 인수를 전달하면 프로시저가 해당 인수를 통해 호출 코드로 값을 반환할 수 있다는 장점이 있고, 

ByVal로 인수를 전달하면 프로시저가 변경하지 못하도록 변수를 보호할 수 있습니다.

전달 메커니즘도 코드 성능에 영향을 미칠 수 있으나 큰 차이는 없습니다. 여기에서 한 가지 예외는 ByVal로 전달되는 값 형식입니다. 

이 경우 Visual Basic에서 인수의 전체 데이터 내용을 복사하므로 구조체처럼 큰 값 형식에 대해서는 ByRef로 전달하는 것이 더 효율적입니다.

참조 형식의 경우에는 데이터에 4바이트 포인터만 복사됩니다. 

따라서 성능에 영향을 주지 않고 String 또는 Object 형식의 인수를 ByVal로 전달할 수 있습니다. 










출처 : msdn, http://liesm.tistory.com/424

'VB' 카테고리의 다른 글

VB6 Call by value / Call by reference  (0) 2018.06.05
VB6 프로시저 (procedure)  (0) 2018.06.05
VB6 iif  (0) 2018.05.14
Visual Basic6 (VB6)에서 마우스 휠 사용하기  (0) 2018.05.02
VB6 Unload / Hide / Show(modal / modeless) 폼 명령어  (0) 2018.04.30
블로그 이미지

벵거빠돌이

,