Visual Basic 변수
- 카테고리 없음
- 2008. 3. 19. 03:43
변수의 통용 범위나 수명에 따라 변수명 앞에 올수 있는 옵션은 Dim, Private, Public, Static으로 4가지가 있다. 우선 변수의 통용 범위에 따른 옵션들을 살펴보면
Dim 으로 변수를 선언하게 되면 그 변수는 해당 프로시저 안에서만 통용가능하며, 변수가 선언된 프로시저가 실행을 종료하면 저장된 값을 잃어버린다. 변수가 선언된 프로시저 수준에서 선언될 수 있으면 Private문과 Public문은 프로시저 수준에서는 선언될 수 없다.
Private문과 Public문으로 변수를 선언하려면 모듈 수준에서만 선언이 가능한데,
Private문으로 선언된 변수는 선언된 모듈 범위 안에서만 변수의 통용이 가능하고, 다른 모듈에서는 사용할 수 없다.
이에반해, Public문으로 선언된 변수는 모든 모듈, 즉 프로그램의 전체에서 변수가 통용될 수 있다.
변수는 수명에 따라 동적 변수와 정적 변수로 나눌수 있다. 수명이란 변수를 위해서 할당된 메모리를 프로그램이 실행되는 시간적인 관점에서 얼마나 오래 확보하느냐를 의미하는 것이다.
Static문으로 선언된 변수는 정적 변수로서, Dim으로 선언된 변수가 프로시저의 실행이 끝나면 메모리를 반납하기 때문에 변수의 값을 잃어버리는 동적인 특성을 가지는 것과는 달리, 변수가 선언된 프로시저의 실행이 끝나도 프로그램이 실행되는 한 메모리를 계속적으로 차지하고 있어서 변수 값을 유지하는 특성을 지닌다.
(1) 지역변수
지역변수는 그 변수가 선언된 프로시저 안에서만 사용될 수 있는 것으로 프로시저 안에서 Dim으로 선언된 변수들이 이에 해당된다. 이렇게 선언된 지역 변수는 해당 프로시저를 벗어나는 순간 변수의 수명은 끝난다. 다시 말해, 이 프로시저가 재실행되어도 이전의 변수에 저장된 값과는 관계없이 숫자를 기억시킨 변수는 0로, 문자를 기억시킨 변수는 " "으로 초기화된다는 것이다. 또한 이 변수들이 다른 모듈이나 프로시저에 선언되어 쓰일경우, 비록 그 변수명이 같더라도 별개의 독립된 메모리를 할당받는 새로운 변수로서 사용된다.
만약 변수를 Dim문으로 선언하면서 프로시저 수준에서 선언하지 않고 모듈 수준에서 하게 되면 그 변수의 통용범위는 선언된 모듈안이 된다. 따라서 Private문으로 선언한 것과 같은 결과를 가진다.
(2) 정적변수
정적 변수는 프로시저가 끝나도 변수에 저장된 값을 프로그램이 끝날 때까지 유지하는 것으로 Static문으로 선언된다. 정적 변수는 프로그램이 실행되는 동안 저장된 변수 값을 잃지 않고 유지하기 때문에 변수가 선언된 프로시저가 재실행될 경우 이전에 변수가 가지고 있던 값을 유지한 상태에서 재실행된다.
(3) 모듈변수
모듈변수는 모듈 내의 모든 프로시저에서 사용가능하지만 다른 모듈에서는 사용할 수 없는 변수를 의미하며, 모듈의 일반부에서 Dim이나 Private으로 선언될 수 있다. 전역 변수에 해당하는 Public과 확실한 구별을 위해 Dim보다는 Private을 사용하는 것이 더 바람직하다.
(4) 전역 변수
프로그램의 모든 모듈 간에 공통적으로 사용하는 변수를 전역 변수라 하며 프로젝트에 표준 모듈을 추가하여 일반 선언부에 Public으로 선엄함으로써 선언할 수 있다. 폼 모듈에서도 Public으로 변수를 선언할 수 있지만, 폼 모듈에서 선언한 전역 변수는 다른 폼 모듈에서 사용하려면 변수가 선언된 폼의 이름을 앞에 붙여서 표현해야한다.