Por favor, dime que tengo un error sutil en mi código aquí y que esta no es la forma en que opera Powershell.Powershell trata cadena vacía como equivalente a nulo en instrucciones de conmutación, pero no si las declaraciones
$in = ""
if ($in -ne $null)
{
switch ($in)
{
$null { echo "This is impossible" }
default { echo "out here!" }
}
}
Todo bien, la lógica honesto dice que este script no debe imprimir "Esto es imposible". Pero lo hace, si $ in es una cadena vacía. Por lo tanto, en Powershell parecería que una cadena vacía y una cadena null
se consideran equivalentes en una declaración switch
pero no en una declaración if
. Esto es por lo que es confuso y es una de las razones principales por las que muchas personas evitan usar Powershell.
¿Alguien me puede aclarar por qué este es el caso? ¿Alguien sabe qué cambio está haciendo detrás de escena? Ciertamente no está haciendo una comparación recta -eq.
Ver aquí - http://rkeithhill.wordpress.com/2007/01/06/checking-for-a-null-or-empty-string/ –
Nunca se debe necesita tener 'switch' comprobación para nulos. Nunca tuve uno en mi código VB.NET. – Neolisk