Enum 문(Visual Basic)
열거형을 선언하고 해당 멤버의 값을 정의합니다.
[ <attribute list> ] [ access modifier ] [ Shadows ]
Enum enumeration name [ As data type ]
member list
End Enum
구성 요소
파트 |
설명 |
attribute list |
선택적 요소로서, 이 열거형에 적용되는 특성의 목록으로, 특성 목록은 꺾쇠괄호("<" 및 ">")로 묶어야 합니다. |
access modifier |
선택적 요소로서, 이 열거형에 액세스할 수 있는 코드를 지정하며, 다음 중 하나일 수 있습니다. Protected Friend를 지정하면 열거형의 클래스, 파생 클래스 또는 같은 어셈블리에 있는 코드에서 액세스할 수 있습니다. |
Shadows |
선택적 요소로서, 이 열거형은 기본 클래스에서 같은 이름의 프로그래밍 요소나 오버로드된 요소 집합을 다시 선언하고 숨기도록 지정합니다. 열거형 멤버가 아니라 열거형 자체에만 Shadows를 지정할 수 있습니다. |
enumeration name |
필수적 요소로서, 열거형 이름으로, 올바른 이름에 대한 자세한 내용은 선언된 요소 이름(Visual Basic)을 참조하십시오. |
data type |
선택적 요소로서, 열거형과 모든 열거형 멤버의 데이터 형식입니다. |
member list |
필수적 요소로서, 이 문에서 선언되는 멤버 상수의 목록으로, 소스 코드 줄마다 여러 개의 멤버가 있습니다. 각 member의 구문과 구성 요소는 [<attribute list>] member name [ = initializer ]입니다.
파트설명
member name 필수적 요소로서,멤버의 이름입니다.
initializer 선택적 요소로서,컴파일할 때 계산되고 이 멤버에 할당되는 식입니다.
|
End Enum |
Enum 블록을 종료합니다. |
설명
논리적으로 서로 관련이 있는 변하지 않는 값의 집합이 있으면 이러한 값을 다 함께 열거형으로 정의할 수 있습니다. 이렇게 하면 열거형과 그 멤버에 의미 있는 이름이 부여되므로 해당 값보다 기억하기가 쉽습니다. 따라서 코드의 여러 위치에 열거형 멤버를 사용할 수 있으며, 관련된 모든 값에 동일한 열거형 이름이 사용되므로 코드를 보다 쉽게 읽을 수 있습니다.
Enum은 네임스페이스 수준이나 모듈 수준에서만 사용할 수 있습니다. 즉, 열거형에 대한 선언 컨텍스트는 소스 파일, 네임스페이스, 클래스, 구조체, 모듈 또는 인터페이스여야 하며 프로시저가 될 수 없습니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준(Visual Basic)을 참조하십시오.
Enum 문은 열거형의 데이터 형식을 선언할 수 있습니다. 각 멤버는 열거형의 데이터 형식을 사용합니다. Byte, Integer, Long, SByte, Short, UInteger, ULong 또는 UShort를 지정할 수 있습니다.
멤버에 initializer를 지정하지 않는 경우 Visual Basic은 이 값을 0(member list의 첫 번째 member인 경우) 또는 바로 앞에 나오는 member 값보다 1이 더 큰 값으로 초기화합니다.
클래스, 구조체, 모듈 및 인터페이스 멤버 열거형은 기본적으로 공용 액세스입니다. 액세스 한정자를 사용하여 액세스 수준을 조정할 수 있습니다. 네임스페이스 멤버 열거형은 friend 수준의 액세스를 기본값으로 사용합니다. 액세스 수준을 공용으로 조정할 수 있지만 전용 또는 보호된 액세스 수준으로는 조정할 수 없습니다. 자세한 내용은 Visual Basic의 액세스 수준을 참조하십시오.
선언 컨텍스트. 모든 프로시저 외부의 모듈 수준에서 선언되는 열거형은 멤버 열거형입니다. 이 열거형은 해당 열거형을 선언하는 클래스, 구조체, 모듈 또는 인터페이스의 멤버입니다.
클래스, 구조체, 모듈 또는 인터페이스 외부에서 네임스페이스 수준에서 선언된 열거형은 오직 이 열거형이 있는 네임스페이스의 멤버입니다.
특성 열거형 전체에 특성을 적용할 수 있지만 해당 멤버에 개별적으로 적용할 수는 없습니다. 특성은 어셈블리의 메타데이터에 정보를 적용합니다.
한정자. 기본적으로 모든 열거형은 형식이며 해당 필드는 상수입니다. 따라서 열거형이나 해당 멤버를 선언할 때 Shared, Static 및 ReadOnly 키워드는 사용할 수 없습니다.
데이터 형식 규칙
기본 형식. 열거형에 data type을 지정하지 않으면 각 멤버에서 해당 initializer의 데이터 형식을 사용합니다. data type과 initializer를 모두 지정하는 경우 initializer의 데이터 형식이 data type으로 변환될 수 있어야 합니다. data type이나 initializer가 모두 없으면 데이터 형식의 기본값으로 Integer가 사용됩니다.
초기화. Enum 문은 member list에서 선택한 멤버의 내용을 초기화할 수 있습니다. initializer를 사용하여 멤버에 할당할 식을 지정합니다.
각 initializer에 지정된 식은 이 열거형의 이전 멤버를 비롯하여 리터럴, 이미 정의된 다른 상수, 이미 정의된 열거형 멤버의 조합일 수 있습니다. 산술 연산자와 논리 연산자를 사용하여 이러한 요소를 조합할 수 있습니다.
initializer에는 변수나 함수를 사용할 수 없습니다. 그러나 CByte나 CShort와 같은 변환 키워드는 사용할 수 있습니다. String 상수나 Char 인수를 사용하여 호출할 경우에는 컴파일 타임에 계산되므로 AscW도 사용할 수 있습니다.
동작
액세스 수준. 모든 열거형 멤버는 공용 액세스 권한을 가지며 열거형 멤버에 액세스 한정자를 사용할 수 없습니다. 그러나 열거형 자체에 보다 제한된 액세스 수준이 있는 경우 지정한 열거형의 액세스 수준이 우선적으로 사용됩니다.
범위. 멤버 열거형은 해당 클래스, 구조체, 모듈 및 인터페이스 내의 모든 위치에서 액세스할 수 있습니다. 네임스페이스 멤버 열거형은 해당 네임스페이스 안의 모든 코드에서 액세스할 수 있습니다.
한정자. 클래스, 구조체 또는 모듈 외부의 코드는 멤버 열거형의 이름을 해당 클래스, 구조체 또는 모듈 이름으로 한정해야 합니다.
잘못된 값. 멤버의 값이 내부 데이터 형식에서 허용하는 범위를 초과하거나 멤버를 내부 데이터 형식에서 허용하는 최대값으로 초기화하면 컴파일러에서 오류를 보고합니다.
열거형 변수는 Enum 형식으로 선언된 변수입니다. 이런 방식으로 변수를 선언하면 해당 변수에 대입하는 값을 제어할 수 있습니다. 그러나 해당 데이터 형식을 열거형의 데이터 형식으로 변환할 수 있는 경우 열거형 멤버가 아닌 값을 할당할 수 있습니다. 이 기능은 열거형이 플래그 필드이고 열거형 변수에 플래그 조합을 할당하는 경우에 유용합니다. 다음 예제에서는 하나의 열거형 변수에 여러 개의 플래그를 할당하는 방법을 보여 줍니다.
Enum filePermissions
create = 1
read = 2
write = 4
delete = 8
End Enum
Dim file1Perm As filePermissions
file1Perm = filePermissions.create Or filePermissions.read
열거형 변수의 이름이나 열거형 이름 자체를 사용하여 열거형 멤버에 대한 모든 참조를 한정해야 합니다. 예를 들어, 위 예에서 첫 번째 멤버를 create가 아닌 filePermissions.create로 참조할 수 있습니다.
예제
다음 예제에서는 Enum 문을 사용하여 명명된 관련 상수 값 집합을 정의합니다. 이 경우에 상수 값은 데이터베이스에 대한 데이터 입력 폼을 설계할 때 선택할 수 있는 색상입니다.
Public Enum InterfaceColors
MistyRose = &HE1E4FF&
SlateGray = &H908070&
DodgerBlue = &HFF901E&
DeepSkyBlue = &HFFBF00&
SpringGreen = &H7FFF00&
ForestGreen = &H228B22&
Goldenrod = &H20A5DA&
Firebrick = &H2222B2&
End Enum
다음 예제에서는 음수와 양수를 모두 포함하는 값을 보여 줍니다.
Enum SecurityLevel
IllegalEntry = -1
MinimumSecurity = 0
MaximumSecurity = 1
End Enum