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 Boole olarak değerlendirebilir. 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 olarak $falsedeğerlendirilir:

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

Ö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 olarak $truedeğ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ırmadan farklı olduğunu 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 [System.Management.Automation.Internal.AutomationNull]::Value çıktının bulunmadığını gösteren özel null değer her zaman $falseolur.
  • Tek öğeli koleksiyonlar, tek ve tek öğelerinin Boole değerini değerlendirir.
  • 1'den fazla öğeye sahip koleksiyonlar her zaman $trueolur.

Ö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 bkz.