다음을 통해 공유


열거형 정보

간단한 설명

문은 enum 열거형을 선언하는 데 사용됩니다. 열거형은 열거자 목록이라는 명명된 레이블 집합으로 구성된 고유한 형식입니다.

자세한 설명

문을 enum 사용하면 강력한 형식의 레이블 집합을 만들 수 있습니다. 해당 열거형은 구문 분석하거나 맞춤법 오류를 검사 않고도 코드에서 사용할 수 있습니다.

열거형은 내부적으로 시작 값이 0인 정수로 표시됩니다. 목록의 첫 번째 레이블에는 값 0이 할당됩니다. 나머지 레이블은 연속된 숫자로 할당됩니다.

정의에서 레이블은 정수 값을 지정할 수 있습니다. 값이 할당되지 않은 레이블은 다음 정수 값을 사용합니다.

구문(기본)

enum <enum-name> {
    <label> [= <int-value>]
    ...
}

사용 예제

다음 예제에서는 미디어 파일로 볼 수 있는 개체의 열거형을 보여줍니다. 정의는 , , picturevideo의 기본 값에 명시적 값을 music할당합니다. 명시적 할당 바로 다음에 오는 레이블은 다음 정수 값을 가져옵니다. 동의어는 다른 레이블에 동일한 값을 할당하여 만들 수 있습니다. , , , 또는 , ogamogg또는 mpgjpgmpegjpeg에 대해 ogg생성된 값을 참조하세요.

enum MediaTypes {
    unknown
    music = 10
    mp3
    aac
    ogg = 15
    oga = 15
    mogg = 15
    picture = 20
    jpg
    jpeg = 21
    png
    video = 40
    mpg
    mpeg = 41
    avi
    m4v
}

메서드는 GetEnumNames() 열거형에 대한 레이블 목록을 반환합니다.

[MediaTypes].GetEnumNames()
unknown
music
mp3
aac
ogg
oga
mogg
picture
jpg
jpeg
png
video
mpg
mpeg
avi
m4v

메서드는 GetEnumValues() 열거형의 값 목록을 반환합니다.

[MediaTypes].GetEnumValues()
unknown
music
mp3
aac
oga
oga
oga
picture
jpeg
jpeg
png
video
mpeg
mpeg
avi
m4v

참고: GetEnumNames() 및 GetEnumValues()는 동일한 결과를 반환하는 것처럼 보입니다. 그러나 내부적으로 PowerShell은 값을 레이블로 변경합니다. 목록을 주의 깊게 읽으면 및 가 oga '이름 가져오기' 결과 아래에 언급되어 있지만 , jpegmpgmpeg에 대한 jpg'값 가져오기' 유사한 출력에는 언급되지 mogg 않습니다.

[MediaTypes].GetEnumName(15)
oga

[MediaTypes].GetEnumNames() | ForEach-Object {
  "{0,-10} {1}" -f $_,[int]([MediaTypes]::$_)
}
unknown    0
music      10
mp3        11
aac        12
ogg        15
oga        15
mogg       15
picture    20
jpg        21
jpeg       21
png        22
video      40
mpg        41
mpeg       41
avi        42
m4v        43

플래그로 열거형

열거형은 비트 플래그의 컬렉션으로 정의할 수 있습니다. 여기서 지정된 지점에서 열거형은 켜진 플래그 중 하나 이상을 나타냅니다.

플래그로 열거형이 제대로 작동하려면 각 레이블에 두 개의 값이 있어야 합니다.

구문(플래그)

[Flags()] enum <enum-name> {
    <label 0> [= 1]
    <label 1> [= 2]
    <label 2> [= 4]
    <label 3> [= 8]
    ...
}

플래그 사용 예제

다음 예제에서는 FileAttributes 열거형이 만들어집니다.

[Flags()] enum FileAttributes {
    Archive = 1
    Compressed = 2
    Device = 4
    Directory = 8
    Encrypted = 16
    Hidden = 32
}

[FileAttributes]$file1 = [FileAttributes]::Archive
[FileAttributes]$file1 +=[FileAttributes]::Compressed
[FileAttributes]$file1 +=  [FileAttributes]::Device
"file1 attributes are: $file1"

[FileAttributes]$file2 = [FileAttributes]28 ## => 16 + 8 + 4
"file2 attributes are: $file2"
file1 attributes are: Archive, Compressed, Device
file2 attributes are: Device, Directory, Encrypted

특정 가 설정되어 있는지 테스트하려면 이진 비교 연산 -band자 를 사용할 수 있습니다. 이 예제에서는 값$file2DeviceArchive 특성을 테스트합니다.

PS > ($file2 -band [FileAttributes]::Device) -eq [FileAttributes]::Device
True

PS > ($file2 -band [FileAttributes]::Archive) -eq [FileAttributes]::Archive
False