방법: 변수의 범위 제어(Visual Basic)

일반적으로 변수는 범위 또는 선언하는 지역 전체에서 참조에 대해 표시됩니다. 경우에 따라 변수의 액세스 수준이 범위에 영향을 줄 수 있습니다.

자세한 내용은 Scope in Visual Basic을 참조하세요.

차단 또는 프로시저 수준의 범위

블록 내에서만 변수를 표시하려면

  • For 루프의 For 문과 Next 문 사이에 해당 블록의 시작 및 종료 선언 문 사이에 변수에 대한 Dim 문을 배치합니다.

    블록 내에서만 변수를 참조할 수 있습니다.

프로시저 내에서만 변수를 표시하려면

  • 변수에 대한 Dim 문을 프로시저 내부에 배치하지만 블록 외부에 배치합니다(예: With...End With 블록).

    프로시저에 포함된 블록 내부를 포함하여 프로시저 내에서만 변수를 참조할 수 있습니다.

모듈 또는 네임스페이스 수준의 범위

편의를 위해 단일 용어 모듈 수준은 모듈, 클래스 및 구조체에 동일하게 적용됩니다. 모듈 수준 변수의 액세스 수준에 따라 범위가 결정됩니다. 모듈, 클래스 또는 구조체가 포함된 네임스페이스도 범위에 영향을 줍니다.

모듈, 클래스 또는 구조체 전체에서 변수를 표시하려면

  1. 변수에 대한 Dim 문을 모듈, 클래스 또는 구조체 내부에 배치하지만 프로시저 외부에 배치합니다.

  2. Dim 문에 Private 키워드를 포함시킵니다.

  3. 모듈, 클래스 또는 구조체 내의 어디에서나 변수를 참조할 수 있지만 외부에서는 참조할 수 없습니다.

네임스페이스 전체에 변수를 표시하려면

  1. 변수에 대한 Dim 문을 모듈, 클래스 또는 구조체 내부에 배치하지만 프로시저 외부에 배치합니다.

  2. Dim 문에Friend 또는 Public 키워드를 포함합니다.

  3. 모듈, 클래스 또는 구조체를 포함하는 네임스페이스 내의 어디에서나 변수를 참조할 수 있습니다.

예시

다음 예제에서는 모듈 수준에서 변수를 선언하고 모듈 내의 코드에 대한 표시 유형을 제한합니다.

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 보안

변수의 범위가 좁을수록 악성 코드가 변수를 잘못 사용할 가능성이 줄어듭니다.

참고 항목