ここのコードに微妙な間違いがあり、これは実際には Powershell の動作方法ではないことを教えてください。
$in = ""
if ($in -ne $null)
{
switch ($in)
{
$null { echo "This is impossible" }
default { echo "out here!" }
}
}
すべての適切で正直なロジックは、このスクリプトが「This is possible 」と出力するべきではないことを示しています。ただし、 $in が空の文字列の場合はそうです。そのため、Powershell では、空の文字列と文字列はステートメントnull
内では同等と見なされますが、switch
ステートメント内では同等と見なされないif
ように見えます。これは非常に紛らわしく、多くの人が Powershell の使用をためらう主な理由の 1 つです。
なぜこれが事実なのか、誰かが私に教えてもらえますか?舞台裏でスイッチが実際に何をしているか知っている人はいますか? 確かに、単純な -eq 比較を行っているわけではありません。