请告诉我,我的代码中有一个细微的错误,这实际上不是 Powershell 的操作方式。
$in = ""
if ($in -ne $null)
{
switch ($in)
{
$null { echo "This is impossible" }
default { echo "out here!" }
}
}
所有好的,诚实的逻辑都说这个脚本永远不应该打印出“这是不可能的”。但是,如果 $in 是一个空字符串,它确实如此。所以在 Powershell 中,空字符串和字符串在null
语句中被认为是等价的,但在语句中却不是。这非常令人困惑,也是许多人回避使用 Powershell 的主要原因之一。switch
if
谁能告诉我为什么会这样?有谁知道switch在幕后实际上在做什么?它当然不是直接进行-eq 比较。