about_Booleans

簡短描述

描述布爾表達式的評估方式。

詳細描述

PowerShell 可以隱含地將任何類型 視為布爾值。 請務必瞭解 PowerShell 用來將其他類型 轉換成布爾 值的規則。

從純量類型轉換

純量類型是不可部分完成的數量,一次只能保存一個值。 下列型態評估為 $false

  • 空字串,例如 ''""
  • Null 值,例如 $null
  • 具有 值的任何數值類型 0

範例:

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

下列型態評估為 $true

  • 非空白字串
  • 任何其他非集合類型的實例

範例:

# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True

請注意,這與 明確字串剖析不同:

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."

從集合類型轉換

陣列是PowerShell中最常見的集合類型。 這些規則適用於任何實作 IList 介面的類似集合類型。

  • 空集合一律為 $false
  • 表示命令 [System.Management.Automation.Internal.AutomationNull]::Value 沒有輸出的特殊 Null 值一律 $false為 。
  • 單一專案集合會評估 其一個和唯一元素的布爾 值。
  • 具有超過 1 個元素的集合一律 $true為 。

範例:

# 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

另請參閱