about_Booleans
Korte beschrijving
Hierin wordt beschreven hoe booleaanse expressies worden geëvalueerd.
Lange beschrijving
PowerShell kan elk type impliciet behandelen als een Booleaanse waarde. Het is belangrijk om inzicht te hebben in de regels die PowerShell gebruikt om andere typen te converteren naar Booleaanse waarden.
Converteren van scalaire typen
Een scalaire waarde is een atomische hoeveelheid die slechts één waarde tegelijk kan bevatten. De volgende typen evalueren:$false
- Lege tekenreeksen zoals
''
of""
- Null-waarden zoals
$null
- Elk numeriek type met de waarde van
0
Voorbeelden:
PS> $false -eq ''
True
PS> if ("") { $true } else { $false }
False
PS> if ($null) { $true } else { $false }
False
PS> if ([int]0) { $true } else { $false }
False
PS> if ([double]0.0) { $true } else { $false }
False
De volgende typen evalueren:$true
- Niet-lege tekenreeksen
- Exemplaren van een ander type niet-verzameling
Voorbeelden:
# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True
Houd er rekening mee dat dit verschilt van expliciete tekenreeksparsering:
PS> [bool]::Parse('false')
False
PS> [bool]::Parse('True')
True
PS> [bool]::Parse('Not True')
MethodInvocationException: Exception calling "Parse" with "1" argument(s):
"String 'Not True' was not recognized as a valid Boolean."
Converteren van verzamelingstypen
Matrices zijn het meest voorkomende verzamelingstype in PowerShell. Deze regels zijn van toepassing op verzamelingachtige typen die de IList-interface implementeren.
- Lege verzamelingen zijn altijd
$false
- De speciale null-waarde die aangeeft dat er geen uitvoer van een opdracht is,
[System.Management.Automation.Internal.AutomationNull]::Value
is altijd$false
. - Verzamelingen met één element evalueren de Booleaanse waarde van hun ene element.
- Verzamelingen met meer dan 1 element zijn altijd
$true
.
Voorbeelden:
# Empty collections
PS> [bool]@()
False
PS> [bool](Get-ChildItem | Where-Object Name -eq 'Non-existent-File.txt')
False
# Single-element collections
PS> $a = @(0)
PS> [bool]$a
False
PS> $b = @(1)
PS> [bool]$b
True
# Multi-element collections
PS> $c = @(0,0)
PS> [bool]$c
True