PowerShell'deki Boole değişmez değerleri


151

PowerShell'deki boole değişmez değerleri nelerdir?


23
Bu iyi bir soru ve benden bir oy aldı. Google aramalarımda görünen ve bana yardımcı olan SO sorularını her zaman onaylarım. Bu 4 downvoter, bu gibi kolay giriş seviyesi sorulara karşı tutumlarını gerçekten yeniden düşünmelidir.
ulidtko

Yanıtlar:


172

$trueve $false.

Bunlar sabitler. Boolean için dil düzeyinde değişmez bilgi yoktur.

İhtiyacınız olan yere bağlı olarak , türün boole olması gerekiyorsa, örneğin boolean (ve çakışan aşırı yüklemesi olmayan) yöntem koşullarında veya koşullu ifadelerde boole değerine zorlanan her şeyi kullanabilirsiniz . Örneğin, null olmayan nesneler doğrudur. null, boş dizeler, boş diziler ve sayı 0yanlış.


18

[bool]1ve [bool]0ayrıca çalışır.


3
Kesin olmak gerekirse, dönüşümün gerçekleştiği bağlamlarda, örneğin bir koşullu ifadede, boole'ye zorlanabilecek birçok şey kullanabilirsiniz. Ve bu durumlarda hiç döküm yapmanıza gerek yok. if ($s.Length) { ... }mesela gayet iyi.
Joey

5

Mevcut yanıtlara daha fazla bilgi eklemek için : Boole değişmez değerleri $trueve $falseayrıca PowerShell (PS) komut dosyaları için komut satırı parametreleri olarak kullanıldığında olduğu gibi çalışır. Adlı bir dosyada saklanan aşağıdaki PS komut dosyası için installmyapp.ps1:

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."

Şimdi bu PS dosyasını bir PS komut satırından çağırmam gerekirse, bunu nasıl yapabilirim:

installmyapp.ps1 -cleanuprequired $true

VEYA

installmyapp.ps1 -cleanuprequired 1

Burada 1ve $trueeşdeğerdir. Ayrıca 0ve $falseeşdeğerdir.

Not : Asla dize değişmezinin trueotomatik olarak boole dönüştürülmesini beklemeyin . Örneğin, aşağıdaki komutu çalıştırırsam:

installmyapp.ps1 -cleanuprequired true

komut dosyasını aşağıdaki hatayla yürütemez:

'Cleanuprequired' parametresinde bağımsız değişken dönüşümü işlenemiyor. "System.String" değeri "System.Boolean" türüne dönüştürülemiyor. Boolean parametreleri yalnızca $ True, $ False, 1 veya 0 gibi Boolean değerlerini ve sayılarını kabul eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.