Share via


Enum 문(Visual Basic)

열거형을 선언하고 해당 멤버의 값을 정의합니다.

[ <attributelist> ] [ accessmodifier ]  [ Shadows ] 
Enum enumerationname [ As datatype ] 
   memberlist
End Enum

요소

파트

설명

attributelist

선택적 요소. 이 열거형에 적용되는 특성의 목록으로, 묶어야 합니다 있는 특성 목록 에서 꺾쇠 괄호 ("<"및">").

FlagsAttribute 특성 값의 열거형의 인스턴스 여러 열거형 멤버가 포함 될 수 있음을 고 각 구성원 나타내는 열거형 값을 비트 필드를 나타냅니다.

accessmodifier

선택적 요소. 이 열거형에 액세스할 수 있는 코드를 지정하며, 다음 중 하나일 수 있습니다.

Protected Friend를 지정하면 열거형의 클래스, 파생 클래스 또는 같은 어셈블리에 있는 코드에서 액세스할 수 있습니다.

Shadows

선택적 요소. 이 열거형은 기본 클래스에서 같은 이름의 프로그래밍 요소나 오버로드된 요소 집합을 다시 선언하고 숨기도록 지정합니다. 열거형 멤버가 아니라 열거형 자체에만 Shadows를 지정할 수 있습니다.

enumerationname

필수 요소. 열거형 이름으로, 올바른 이름에 대한 자세한 내용은 선언된 요소 이름(Visual Basic)을 참조하십시오.

datatype

선택적 요소. 열거형과 모든 열거형 멤버의 데이터 형식입니다.

memberlist

필수 요소. 이 문에서 선언되는 멤버 상수의 목록으로, 소스 코드 줄마다 여러 개의 멤버가 있습니다.

각 member의 구문과 구성 요소는 [<attribute list>] member name [ = initializer ]입니다.

파트

설명

membername

필수 요소. 멤버의 이름입니다.

initializer

선택적 요소. 컴파일할 때 계산되고 이 멤버에 할당되는 식입니다.

End Enum

Enum 블록을 종료합니다.

설명

논리적으로 서로 관련이 있는 변하지 않는 값의 집합이 있으면 이러한 값을 다 함께 열거형으로 정의할 수 있습니다. 이렇게 하면 열거형과 그 멤버에 의미 있는 이름이 부여되므로 해당 값보다 기억하기가 쉽습니다. 따라서 코드의 여러 위치에 열거형 멤버를 사용할 수 있으며,

열거형을 사용 하 여 다음과 같은 혜택이 있습니다.

  • 숫자를 잘못 입력하여 생기는 오류를 줄일 수 있습니다.

  • 나중에 값을 변경하기가 쉽습니다.

  • 덜 오류를 소개 하는 읽기 쉽게 코드를 만들 수 있습니다.

  • 이전 버전과의 호환성이 유지됩니다. 열거형을 사용 하는 경우 코드는 나중에 다른 사용자가 멤버 이름에 해당 하는 값 변경 되는 경우 실패할 가능성이 적습니다.

열거형 이름, 내부 데이터 형식 및 구성원 집합이 있습니다. 각 멤버는 상수를 나타냅니다.

클래스, 구조체, 모듈 또는 인터페이스 수준에서 모든 프로시저 외부에 선언 된 열거형 인지는 열거형 멤버. 이 멤버에는 클래스, 구조체, 모듈 또는 인터페이스 선언입니다.

열거형 멤버에서 아무 곳 이나 해당 클래스, 구조체, 모듈 또는 인터페이스 내에서 액세스할 수 있습니다. 클래스, 구조체 또는 모듈 외부의 코드는 멤버 열거형의 이름을 해당 클래스, 구조체 또는 모듈 이름으로 한정해야 합니다. 추가 하 여 정규화 된 이름을 사용할 필요가 피할 수 있습니다는 Imports 문은 소스 파일입니다.

클래스, 구조체, 모듈 또는 인터페이스 외부 네임 스페이스 수준에서 선언 된 열거형에 나타나는 네임 스페이스의 멤버입니다.

선언 컨텍스트 열거형은 소스 파일, 네임 스페이스, 클래스, 구조체, 모듈 또는 인터페이스 여야 합니다 및 프로시저일 수는 없습니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준(Visual Basic)을 참조하십시오.

열거형 전체에 특성을 적용할 수 있지만 해당 멤버에 개별적으로 적용할 수는 없습니다. 특성은 어셈블리의 메타데이터에 정보를 적용합니다.

데이터 형식

Enum 문은 열거형의 데이터 형식을 선언할 수 있습니다. 각 멤버는 열거형의 데이터 형식을 사용합니다. Byte, Integer, Long, SByte, Short, UInteger, ULong 또는 UShort를 지정할 수 있습니다.

열거형에 datatype을 지정하지 않으면 각 멤버에서 해당 initializer의 데이터 형식을 사용합니다. datatype과 initializer를 모두 지정하는 경우 initializer의 데이터 형식이 datatype으로 변환될 수 있어야 합니다. datatype이나 initializer가 모두 없으면 데이터 형식의 기본값으로 Integer가 사용됩니다.

멤버를 초기화합니다.

Enum 문은 memberlist에서 선택한 멤버의 내용을 초기화할 수 있습니다. initializer를 사용하여 멤버에 할당할 식을 지정합니다.

지정 하지 않으면 initializer 회원에 대 한 Visual Basic 중 하나를 0으로 초기화 (첫 번째 이면 member 에서 memberlist), 나가 하나 보다는 바로 앞의 큰 값 member.

각 initializer에 지정된 식은 이 열거형의 이전 멤버를 비롯하여 리터럴, 이미 정의된 다른 상수, 이미 정의된 열거형 멤버의 조합일 수 있습니다. 산술 연산자와 논리 연산자를 사용하여 이러한 요소를 조합할 수 있습니다.

initializer에는 변수나 함수를 사용할 수 없습니다. 그러나 CByte나 CShort와 같은 변환 키워드는 사용할 수 있습니다. String 상수나 Char 인수를 사용하여 호출할 경우에는 컴파일 타임에 계산되므로 AscW도 사용할 수 있습니다.

열거형에는 부동 소수점 값을 사용할 수 없습니다. 멤버는 부동 소수점 값에 할당 된 경우 및 Option Strict 에서 컴파일러 오류가 발생 합니다. 설정 됩니다. 경우 Option Strict 를 끄면 값 자동으로 변환 하는 Enum 형식입니다.

멤버의 값이 내부 데이터 형식에서 허용하는 범위를 초과하거나 멤버를 내부 데이터 형식에서 허용하는 최대값으로 초기화하면 컴파일러에서 오류를 보고합니다.

한정자

클래스, 구조체, 모듈 및 인터페이스 멤버 열거형은 기본적으로 공용 액세스입니다. 액세스 한정자를 사용하여 액세스 수준을 조정할 수 있습니다. 네임스페이스 멤버 열거형은 friend 수준의 액세스를 기본값으로 사용합니다. 액세스 수준을 공용으로 조정할 수 있지만 전용 또는 보호된 액세스 수준으로는 조정할 수 없습니다. 자세한 내용은 Visual Basic의 액세스 수준을 참조하십시오.

모든 열거형 멤버는 공용 액세스 권한을 가지며 열거형 멤버에 액세스 한정자를 사용할 수 없습니다. 그러나 열거형 자체에 보다 제한된 액세스 수준이 있는 경우 지정한 열거형의 액세스 수준이 우선적으로 사용됩니다.

기본적으로 모든 열거형은 형식이며 해당 필드는 상수입니다. 따라서 열거형이나 해당 멤버를 선언할 때 Shared, Static 및 ReadOnly 키워드는 사용할 수 없습니다.

여러 값을 할당합니다.

일반적으로 열거형 배타적인 값을 나타냅니다. 포함 하 여는 FlagsAttribute 특성에 있는 Enum 선언, 대신 할당할 수 여러 값에 열거형의 인스턴스. FlagsAttribute 특성을 열거형 비트 필드, 즉, 플래그 집합으로 취급 하도록 지정 합니다. 이러한 이라고 비트 열거형입니다.

때 선언 하 여 열거형을 사용 하 여는 FlagsAttribute 특성이 좋습니다 값입니다 2, 1, 2, 4, 8, 16 등의 힘을 사용 하는 것입니다. 또한 "없음" 이름 값이 0 인 멤버는 것이 좋습니다. 추가 지침을 참조 하십시오. FlagsAttributeEnum.

예제

다음 예제에서는 사용 하는 방법을 보여 줍니다 있는 Enum 문. 구성원 이라고 참고 EggSizeEnum.Medium, 아니라 Medium.

Public Class Egg
    Enum EggSizeEnum
        Jumbo
        ExtraLarge
        Large
        Medium
        Small
    End Enum 

    Public Sub Poach()
        Dim size As EggSizeEnum

        size = EggSizeEnum.Medium
        ' Continue processing... 
    End Sub 
End Class

메서드는 다음 예제에서 밖에 있는 Egg 클래스입니다. 따라서, EggSizeEnum 이름으로 정규화 되어 Egg.EggSizeEnum.

Public Sub Scramble(ByVal size As Egg.EggSizeEnum)
    ' Process for the three largest sizes. 
    ' Throw an exception for any other size. 
    Select Case size
        Case Egg.EggSizeEnum.Jumbo
            ' Process. 
        Case Egg.EggSizeEnum.ExtraLarge
            ' Process. 
        Case Egg.EggSizeEnum.Large
            ' Process. 
        Case Else 
            Throw New ApplicationException("size is invalid: " & size.ToString)
    End Select 
End Sub

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

다음 예에서는 As 절을 지정 하는 데 사용의 datatype 열거형의.

Public Enum MyEnum As Byte
  Zero
  One
  Two
End Enum

다음 예제에서는 비트 열거형을 사용 하는 방법을 보여 줍니다. 여러 값의 비트 열거형의 인스턴스를 할당할 수 있습니다. Enum 선언 포함의 FlagsAttribute 특성이 열거형의 플래그 집합으로 처리할 수 있음을 나타냅니다.

' Apply the Flags attribute, which allows an instance 
' of the enumeration to have multiple values.
<Flags()> Public Enum FilePermissions As Integer
    None = 0
    Create = 1
    Read = 2
    Update = 4
    Delete = 8
End Enum 

Public Sub ShowBitwiseEnum()

    ' Declare the non-exclusive enumeration object and 
    ' set it to multiple values. 
    Dim perm As FilePermissions
    perm = FilePermissions.Read Or FilePermissions.Update

    ' Show the values in the enumeration object.
    Console.WriteLine(perm.ToString)
    ' Output: Read, Update 

    ' Show the total integer value of all values 
    ' in the enumeration object.
    Console.WriteLine(CInt(perm))
    ' Output: 6 

    ' Show whether the enumeration object contains 
    ' the specified flag.
    Console.WriteLine(perm.HasFlag(FilePermissions.Update))
    ' Output: True 
End Sub

다음 예제에서는 열거형을 반복합니다. 사용 하는 GetNames 메서드가 해당 열거형에서 멤버 이름의 배열을 검색 하 고 GetValues 구성원 값의 배열을 검색 합니다.

Enum EggSizeEnum
    Jumbo
    ExtraLarge
    Large
    Medium
    Small
End Enum 

Public Sub Iterate()
    Dim names = [Enum].GetNames(GetType(EggSizeEnum))
    For Each name In names
        Console.Write(name & " ")
    Next
    Console.WriteLine()
    ' Output: Jumbo ExtraLarge Large Medium Small  

    Dim values = [Enum].GetValues(GetType(EggSizeEnum))
    For Each value In values
        Console.Write(value & " ")
    Next
    Console.WriteLine()
    ' Output: 0 1 2 3 4  
End Sub

참고 항목

참조

Enum

Const 문(Visual Basic)

Dim 문(Visual Basic)

형식 변환 함수(Visual Basic)

AscW

개념

암시적 변환과 명시적 변환(Visual Basic)

상수 및 열거형(Visual Basic)