about_Booleans

Kısa açıklama

Boole ifadelerinin nasıl değerlendirildiği açıklanır.

Uzun açıklama

PowerShell, herhangi bir türü örtük olarak Booleolarak işleyebilir. PowerShell'in diğer türleri Boole değerlerine dönüştürmek için kullandığı kuralları anlamak önemlidir.

Skaler türlerden dönüştürme

skaler türü, aynı anda yalnızca bir değeri tutabilen atomik bir miktardır. Aşağıdaki türler $falseolarak değerlendirilir:

  • '' veya "" gibi boş dizeler
  • $null gibi null değerler
  • 0 değerine sahip herhangi bir sayısal tür

Örnekler:

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

Aşağıdaki türler $trueolarak değerlendirilir:

  • Boş olmayan dizeler
  • Koleksiyon olmayan başka bir türün örnekleri

Örnekler:

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

Bunun açık dize ayrıştırmafarklılık gösterdiğini unutmayın:

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

Koleksiyon türlerinden dönüştürme

Diziler PowerShell'deki en yaygın koleksiyon türüdür. Bu kurallar, IList arabirimini uygulayan koleksiyon benzeri türler için geçerlidir.

  • Boş koleksiyonlar her zaman $false
  • Bir komuttan çıktının bulunmadığını belirten özel null değer [System.Management.Automation.Internal.AutomationNull]::Value her zaman $false.
  • Tek öğeli koleksiyonlar, tek ve tek öğelerinin Boole değerini değerlendirir.
  • 1'den fazla öğeye sahip koleksiyonlar her zaman $true.

Örnekler:

# 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

Ayrıca bakınız