Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kurzbeschreibung
Die enum-Anweisung wird verwendet, um eine Enumeration zu deklarieren. Eine Enumeration ist ein eindeutiger Typ, der aus einer Gruppe benannter Bezeichnungen besteht, die als Enumeratorliste bezeichnet werden.
Lange Beschreibung
Mit der enum-Anweisung können Sie einen stark typierten Satz von Bezeichnungen erstellen. Diese Enumeration kann im Code verwendet werden, ohne dass eine Analyse oder eine Überprüfung auf Rechtschreibfehler erforderlich ist.
Enumerationen werden intern als ganze Zahlen mit einem Startwert von Null dargestellt. Der ersten Beschriftung in der Liste wird der Wert Null zugewiesen. Die restlichen Beschriftungen werden mit fortlaufenden Nummern versehen.
In der Definition können Beschriftungen mit einem beliebigen ganzzahligen Wert versehen werden. Beschriftungen ohne zugewiesenen Wert nehmen den nächsten ganzzahligen Wert.
Syntax (grundlegend)
enum <enum-name> {
<label> [= <int-value>]
...
}
Verwendungsbeispiel
Das folgende Beispiel zeigt eine Aufzählung von Objekten, die als Mediendateien angezeigt werden können. Die Definition weist den zugrunde liegenden Werten von music, picture, videoexplizite Werte zu. Beschriftungen, die unmittelbar auf eine explizite Zuordnung folgen, erhalten den nächsten ganzzahligen Wert. Synonyme können erstellt werden, indem ein anderer Bezeichnung denselben Wert zugewiesen wird. Siehe die konstruierten Werte für: ogg, oga, mogg, oder jpg, jpegoder , mpg.mpeg
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
}
Die GetEnumNames()-Methode gibt die Liste der Bezeichnungen für die Enumeration zurück.
[MediaTypes].GetEnumNames()
unknown
music
mp3
aac
ogg
oga
mogg
picture
jpg
jpeg
png
video
mpg
mpeg
avi
m4v
Die GetEnumValues()-Methode gibt die Liste der Werte für die Enumeration zurück.
[MediaTypes].GetEnumValues()
unknown
music
mp3
aac
oga
oga
oga
picture
jpeg
jpeg
png
video
mpeg
mpeg
avi
m4v
Hinweis
GetEnumNames() und GetEnumValues() scheinen dieselben Ergebnisse zurückzugeben; eine Liste mit benannten Werten. Intern ordnet GetEnumValues() die Werte jedoch auf und ordnet dann Werte namen zu. Lesen Sie die Liste sorgfältig, und Sie werden feststellen, dass ogg, ogaund mogg in der Ausgabe von GetEnumNames()angezeigt werden, aber die Ausgabe von GetEnumValues() zeigt nur oga. Dasselbe geschieht für jpg, jpegund mpg, mpeg.
Die GetEnumName() Methode kann verwendet werden, um einen Namen abzurufen, der einem bestimmten Wert zugeordnet ist. Wenn einem Wert mehrere Namen zugeordnet sind, gibt die Methode den alphabetischen Vornamen zurück.
[MediaTypes].GetEnumName(15)
oga
Das folgende Beispiel zeigt, wie jeder Name dem Wert zugeordnet wird.
[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
Enumerationen als Kennzeichnungen
Enumerationen können als eine Sammlung von Bitflags definiert werden. Dabei stellt die Enumeration zu einem beliebigen Zeitpunkt eines oder mehrere dieser aktivierten Flags dar.
Damit Enumerationen als Flags ordnungsgemäß funktionieren, sollte jede Bezeichnung eine Potenz von zwei Werten aufweisen.
Syntax (Flags)
[Flags()] enum <enum-name> {
<label 0> [= 1]
<label 1> [= 2]
<label 2> [= 4]
<label 3> [= 8]
...
}
Beispiel für die Verwendung von Flags
Im folgenden Beispiel wird die FileAttributes-Enumeration erstellt.
[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
Um zu testen, ob ein bestimmter Wert festgelegt ist, können Sie den binären Vergleichsoperator -bandverwenden. In diesem Beispiel testen wir die Attribute Device und Archive im Wert von $file2.
PS > ($file2 -band [FileAttributes]::Device) -eq [FileAttributes]::Device
True
PS > ($file2 -band [FileAttributes]::Archive) -eq [FileAttributes]::Archive
False