열거형 정보
간단한 설명
문은 enum
열거형을 선언하는 데 사용됩니다. 열거형은 열거자 목록이라는 명명된 레이블 집합으로 구성된 고유한 형식입니다.
자세한 설명
문을 enum
사용하면 강력한 형식의 레이블 집합을 만들 수 있습니다. 해당 열거형은 구문 분석하거나 맞춤법 오류를 검사 않고도 코드에서 사용할 수 있습니다.
열거형은 내부적으로 시작 값이 0인 정수로 표시됩니다. 목록의 첫 번째 레이블에는 값 0이 할당됩니다. 나머지 레이블은 연속된 숫자로 할당됩니다.
정의에서 레이블은 정수 값을 지정할 수 있습니다. 값이 할당되지 않은 레이블은 다음 정수 값을 사용합니다.
구문(기본)
enum <enum-name> {
<label> [= <int-value>]
...
}
사용 예제
다음 예제에서는 미디어 파일로 볼 수 있는 개체의 열거형을 보여줍니다. 정의는 , , picture
video
의 기본 값에 명시적 값을 music
할당합니다. 명시적 할당 바로 다음에 오는 레이블은 다음 정수 값을 가져옵니다. 동의어는 다른 레이블에 동일한 값을 할당하여 만들 수 있습니다. , , , 또는 , oga
mogg
또는 mpg
jpg
mpeg
jpeg
에 대해 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
'이름 가져오기' 결과 아래에 언급되어 있지만 , jpeg
및 mpg
mpeg
에 대한 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
자 를 사용할 수 있습니다. 이 예제에서는 값$file2
의 Device 및 Archive 특성을 테스트합니다.
PS > ($file2 -band [FileAttributes]::Device) -eq [FileAttributes]::Device
True
PS > ($file2 -band [FileAttributes]::Archive) -eq [FileAttributes]::Archive
False