방법: 변수의 사용 가능성 제어(Visual Basic)

변수의 액세스 수준을 지정하여 가용성을 제어합니다. 액세스 수준은 변수를 읽고 쓸 권한을 어떤 코드에게 허용할 지를 결정합니다.

  • 프로시저 외부에서 모듈 수준으로 정의되는 멤버 변수의 기본값은 공용 액세스이며, 이는 어떤 코드라도 이 변수를 보고 액세스할 수 있다는 의미입니다. 액세스 한정자를 지정하여 이를 변경할 수 있습니다.

  • 프로시저 내부에서 정의되는 지역 변수는 명목상으로는 공용 액세스 권한이 있지만 해당 프로시저 내부 코드만 여기에 액세스할 수 있습니다. 지역 변수의 액세스 수준을 변경할 수는 없지만 해당 변수를 포함하는 프로시저의 액세스 수준을 변경할 수는 있습니다.

자세한 내용은 Visual Basic의 액세스 수준을 참조하세요.

프라이빗 액세스와 공용 액세스

모듈, 클래스, 구조체 내에서만 변수에 액세스하는 방법은 다음과 같습니다.

  1. 모듈이나 클래스, 구조체에 들어 있으나 프로시저에서는 벗어난 변수에 Dim 문을 배치합니다.

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

    모듈, 클래스, 구조체 내부 어디에서든 해당 변수를 읽고 쓸 수 있지만 외부에서는 불가능합니다.

변수를 볼 수 있는 모든 코드에서 해당 변수에 액세스할 수 있게 하는 방법은 다음과 같습니다.

  1. 멤버 변수에서는 모듈이나 클래스, 구조체에 포함되나 프로시저에서는 벗어나는 변수에 Dim 문을 배치합니다.

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

    어셈블리와 상호 운용되는 모든 코드에서 변수를 읽거나 쓸 수 있습니다.

또는

  1. 지역 변수에서는 프로시저 내부의 변수에 Dim 문을 배치합니다.

  2. Public 키워드를 Dim 문에 포함시키지 않도록 합니다.

    프로시저 내부 어디에서든 해당 변수를 읽고 쓸 수 있지만 외부에서는 불가능합니다.

보호 중인 Friend 액세스

변수의 액세스 수준을 해당 클래스와 기타 파생 클래스 또는 그 어셈블리로 제한할 수 있습니다. 이러한 제한의 합집합을 지정하여 모든 파생 클래스의 코드에게 액세스를 허용하거나 동일 어셈블리의 다른 지점에 대한 액세스를 허용할 수도 있습니다. 동일한 선언에서 Protected 키워드와 Friend 키워드를 함께 사용하여 이러한 합집합을 지정할 수 있습니다.

자체 클래스와 기타 공용 클래스에서만 변수에 액세스할 수 있도록 하는 방법은 다음과 같습니다.

  1. 클래스에 포함되지만 프로시저에는 포함되지 않는 변수에 Dim 문을 배치합니다.

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

    클래스 내부 어디서든 변수를 읽고 쓸 수 있으며 해당 변수에서 파생된 모든 클래스에서도 마찬가지이나 파생 연쇄에 포함되는 클래스가 아니라면 허용되지 않습니다.

동일한 어셈블리 내부에서만 변수에 액세스할 수 있도록 하는 방법은 다음과 같습니다.

  1. 모듈이나 클래스, 구조체에 포함되지만 프로시저에는 포함되지 않는 변수에 Dim 문을 배치합니다.

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

    해당 모듈이나 클래스, 구조체 내부에서는 어디서든 해당 변수를 읽거나 쓸 수 있으며 이는 동일한 어셈블리에서도 마찬가지이나 해당 어셈블리를 벗어나는 경우에는 허용되지 않습니다.

예시

다음 예제에서는 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  

.NET Framework 보안

변수에 대한 액세스 수준이 제한적일수록 악성코드에게 악용될 확률은 줄어듭니다.

참고 항목