Ti prego, dimmi che ho un sottile errore nel mio codice qui e che questo non è in realtà il modo in cui opera PowerShell.PowerShell considera stringa vuota come equivalente al nulla in istruzioni switch, ma non se le dichiarazioni
$in = ""
if ($in -ne $null)
{
switch ($in)
{
$null { echo "This is impossible" }
default { echo "out here!" }
}
}
Tutto bene, la logica onesto dice che questo script non dovrebbe mai stampare "Questo è impossibile". Ma lo fa, se $ in è una stringa vuota. Quindi in Powershell sembrerebbe che una stringa vuota e una stringa null
siano considerate equivalenti in una dichiarazione switch
ma non in una dichiarazione if
. Questo è quindi confuso ed è uno dei motivi principali per cui molte persone evitano l'uso di Powershell.
Qualcuno può illuminarmi sul motivo per cui questo è il caso? Qualcuno sa quale interruttore sta effettivamente facendo dietro le quinte? Non sta certamente facendo un confronto diretto -eq.
vedi qui - http://rkeithhill.wordpress.com/2007/01/06/checking-for-a-null-or-empty-string/ –
Non si dovrebbe mai bisogno di avere 'switch' controllo per null. Non ne ho mai avuto uno nel mio codice VB.NET. – Neolisk