Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
KORTE BESCHRIJVING
De enum instructie wordt gebruikt om een opsomming te declareren. Een opsomming is een uniek type dat bestaat uit een set benoemde labels, de enumeratorlijst genoemd.
LANGE BESCHRIJVING
Met de enum-instructie kunt u een sterk getypte set labels maken. Die opsomming kan in de code worden gebruikt zonder te hoeven parseren of controleren op spelfouten.
Opsommingen worden intern weergegeven als gehele getallen met een startwaarde van nul. Aan het eerste label in de lijst wordt de waarde nul toegekend. De overige labels worden voorzien van opeenvolgende nummers.
In de definitie kunnen labels elke gehele waarde krijgen. Labels waaraan geen waarde is toegewezen, nemen de volgende gehele waarde.
Syntaxis (basis)
enum <enum-name> {
<label> [= <int-value>]
...
}
Gebruiksvoorbeeld
In het volgende voorbeeld ziet u een opsomming van objecten die als mediabestanden kunnen worden gezien. De definitie wijst expliciete waarden toe aan de onderliggende waarden van music, picture, video. Labels direct na een expliciete toewijzing krijgen de volgende gehele waarde. Synoniemen kunnen worden gemaakt door dezelfde waarde aan een ander label toe te kennen; Zie de geconstrueerde waarden voor: , , , of jpg, jpeg, of mpg, mpeg. moggogaogg
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
}
De methode GetEnumNames() retourneert de lijst met de labels voor de opsomming.
[MediaTypes].GetEnumNames()
unknown
music
mp3
aac
ogg
oga
mogg
picture
jpg
jpeg
png
video
mpg
mpeg
avi
m4v
De methode GetEnumValues() retourneert de lijst met de waarden voor de opsomming.
[MediaTypes].GetEnumValues()
unknown
music
mp3
aac
oga
oga
oga
picture
jpeg
jpeg
png
video
mpeg
mpeg
avi
m4v
Opmerking: GetEnumNames() en GetEnumValues() lijken dezelfde resultaten te retourneren.
Intern verandert PowerShell echter waarden in labels. Lees de lijst aandachtig en u zult merken dat oga en mogg worden vermeld onder de resultaten van 'Namen ophalen', maar niet onder de vergelijkbare uitvoer van 'Waarden ophalen' voor jpg, jpeg, en mpg, mpeg.
[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
Opsommingen als vlaggen
Opsommingen kunnen worden gedefinieerd als een verzameling bitvlaggen. Waar, op een bepaald punt, de opsomming een of meer van die vlaggen vertegenwoordigt die zijn ingeschakeld.
Om opsommingen als vlaggen goed te laten werken, moet elk label een macht van twee waarden hebben.
Syntaxis (vlaggen)
[Flags()] enum <enum-name> {
<label 0> [= 1]
<label 1> [= 2]
<label 2> [= 4]
<label 3> [= 8]
...
}
Voorbeeld van het gebruik van vlaggen
In het volgende voorbeeld wordt de opsomming van FileAttributes gemaakt.
[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
Om te testen of een specifieke is ingesteld, kunt u de binaire vergelijkingsoperator -bandgebruiken. In dit voorbeeld testen we op de kenmerken Device en Archive in de waarde van $file2.
PS > ($file2 -band [FileAttributes]::Device) -eq [FileAttributes]::Device
True
PS > ($file2 -band [FileAttributes]::Archive) -eq [FileAttributes]::Archive
False