방법: 변수의 사용 가능성 제어
업데이트: 2007년 11월
액세스 수준을 지정하여 변수의 사용 가능성을 제어할 수 있습니다. 액세스 수준에 따라 변수를 읽거나 쓸 수 있는 권한이 있는 코드가 결정됩니다.
모듈 수준 및 프로시저 외부에 정의된 멤버 변수의 기본 액세스 수준은 Public입니다. 즉, 해당 변수를 볼 수 있는 모든 코드에서 액세스할 수 있습니다. 액세스 한정자를 지정하여 이를 변경할 수 있습니다.
프로시저 내에 정의된 지역 변수의 액세스 수준도 일반적으로 Public이지만 해당 프로시저 내의 코드에서만 액세스할 수 있습니다. 지역 변수의 액세스 수준은 변경할 수 없지만 지역 변수가 포함된 프로시저의 액세스 수준은 변경할 수 있습니다.
자세한 내용은 Visual Basic의 액세스 수준을 참조하십시오.
Private 및 Public 액세스 수준
변수를 모듈, 클래스 또는 구조체 내에서만 액세스할 수 있도록 하려면
모듈, 클래스 또는 구조체 내에서 모든 프로시저의 바깥쪽 위치에 변수에 대한 Dim 문(Visual Basic)을 넣습니다.
Dim 문에 Private(Visual Basic) 키워드를 포함시킵니다.
이렇게 하면 변수 읽기 또는 쓰기가 해당 모듈, 클래스 또는 구조체 내에서만 가능하고 외부에서는 가능하지 않습니다.
변수를 볼 수 있는 모든 코드에서 액세스할 수 있도록 하려면
멤버 변수의 경우, 모듈, 클래스 또는 구조체 내에서 모든 프로시저의 바깥쪽 위치에 변수에 대한 Dim 문을 넣습니다.
Dim 문에 Public(Visual Basic) 키워드를 포함시킵니다.
이렇게 하면 해당 어셈블리와 상호 작용하는 모든 코드에서 변수를 읽고 쓸 수 있습니다.
- 또는 -
지역 변수의 경우, 프로시저 내에 변수에 대한 Dim 문을 넣습니다.
Dim 문에 Public 키워드를 포함하지 않습니다.
이렇게 하면 변수 읽기 또는 쓰기가 해당 프로시저 내에서만 가능하고 외부에서는 가능하지 않습니다.
Protected 및 Friend 액세스 수준
변수의 액세스 수준을 해당 클래스와 모든 파생 클래스 또는 어셈블리로 제한할 수 있습니다. 이러한 제한을 여러 개 결합할 수도 있습니다. 이렇게 하면 동일한 어셈블리의 파생 클래스나 다른 위치에 있는 코드에서 변수에 액세스할 수 있습니다. 동일한 선언에 Protected 키워드와 Friend 키워드를 모두 사용하여 이 제한 조합을 지정합니다.
변수를 해당 클래스와 모든 파생 클래스 내에서만 액세스할 수 있도록 하려면
클래스 내에서 모든 프로시저의 바깥쪽 위치에 변수에 대한 Dim 문을 넣습니다.
Dim 문에 Protected(Visual Basic) 키워드를 포함시킵니다.
이렇게 하면 변수 읽기 또는 쓰기가 해당 클래스와 해당 클래스에서 파생된 클래스 내에서만 가능하고 파생 체인에 있는 클래스의 외부에서는 가능하지 않습니다.
변수를 동일한 어셈블리 내에서만 액세스할 수 있도록 하려면
모듈, 클래스 또는 구조체 내에서 모든 프로시저의 바깥쪽 위치에 변수에 대한 Dim 문을 넣습니다.
Dim 문에 Friend(Visual Basic) 키워드를 포함시킵니다.
변수 읽기 또는 쓰기가 모듈, 클래스 또는 구조체 내의 모든 위치뿐 아니라 동일한 어셈블리의 모든 코드에서도 가능하지만 어셈블리 외부에서는 가능하지 않습니다.
예제
다음 예제에서는 Public, Protected, Friend, Protected Friend 또는 Private 액세스 수준을 사용한 변수 선언을 보여 줍니다. Dim 문에서 액세스 수준을 지정한 경우에는 Dim 키워드를 사용하지 않아도 됩니다.
Public Class classForEverybody
Protected Class classForMyHeirs
Friend stringForThisProject As String
Protected Friend stringForProjectAndHeirs As String
Private numberForMeOnly As Integer
보안
변수의 액세스 수준이 제한적일수록 악의적인 코드에서 변수를 부적절하게 사용할 가능성이 줄어듭니다.