방법: 변수의 범위 제어(Visual Basic)
일반적으로 변수는 범위 또는 선언하는 지역 전체에서 참조에 대해 표시됩니다. 경우에 따라 변수의 액세스 수준이 범위에 영향을 줄 수 있습니다.
자세한 내용은 Scope in Visual Basic을 참조하세요.
차단 또는 프로시저 수준의 범위
블록 내에서만 변수를 표시하려면
For
루프의For
문과Next
문 사이에 해당 블록의 시작 및 종료 선언 문 사이에 변수에 대한 Dim 문을 배치합니다.블록 내에서만 변수를 참조할 수 있습니다.
프로시저 내에서만 변수를 표시하려면
변수에 대한
Dim
문을 프로시저 내부에 배치하지만 블록 외부에 배치합니다(예:With
...End With
블록).프로시저에 포함된 블록 내부를 포함하여 프로시저 내에서만 변수를 참조할 수 있습니다.
모듈 또는 네임스페이스 수준의 범위
편의를 위해 단일 용어 모듈 수준은 모듈, 클래스 및 구조체에 동일하게 적용됩니다. 모듈 수준 변수의 액세스 수준에 따라 범위가 결정됩니다. 모듈, 클래스 또는 구조체가 포함된 네임스페이스도 범위에 영향을 줍니다.
모듈, 클래스 또는 구조체 전체에서 변수를 표시하려면
변수에 대한
Dim
문을 모듈, 클래스 또는 구조체 내부에 배치하지만 프로시저 외부에 배치합니다.Dim
문에 Private 키워드를 포함시킵니다.모듈, 클래스 또는 구조체 내의 어디에서나 변수를 참조할 수 있지만 외부에서는 참조할 수 없습니다.
네임스페이스 전체에 변수를 표시하려면
변수에 대한
Dim
문을 모듈, 클래스 또는 구조체 내부에 배치하지만 프로시저 외부에 배치합니다.모듈, 클래스 또는 구조체를 포함하는 네임스페이스 내의 어디에서나 변수를 참조할 수 있습니다.
예시
다음 예제에서는 모듈 수준에서 변수를 선언하고 모듈 내의 코드에 대한 표시 유형을 제한합니다.
Module demonstrateScope
Private strMsg As String
Sub initializePrivateVariable()
strMsg = "This variable cannot be used outside this module."
End Sub
Sub usePrivateVariable()
MsgBox(strMsg)
End Sub
End Module
앞의 예제에서 모듈 demonstrateScope
에 정의된 모든 프로시저는 String
변수 strMsg
을 참조할 수 있습니다. usePrivateVariable
프로시저가 호출되면 대화 상자에 strMsg
문자열 변수의 내용이 표시됩니다.
앞의 예제를 다음과 같이 변경하면 코드에서 strMsg
문자열 변수를 해당 선언의 네임스페이스 어디에서나 참조할 수 있습니다.
Public strMsg As String
강력한 프로그래밍
변수의 범위가 좁을수록 이름이 같은 다른 변수 대신 실수로 참조할 기회가 줄어듭니다. 참조 일치 문제를 최소화할 수도 있습니다.
.NET Framework 보안
변수의 범위가 좁을수록 악성 코드가 변수를 잘못 사용할 가능성이 줄어듭니다.
참고 항목
.NET