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 |