请告诉我,我的代码中有一个微妙的错误,这实际上并不是Powershell的运作方式.
$in = ""
if ($in -ne $null)
{
switch ($in)
{
$null { echo "This is impossible" }
default { echo "out here!" }
}
}
Run Code Online (Sandbox Code Playgroud)
所有善良,诚实的逻辑说,这个剧本永远不应该打印出" 这是不可能的 ".但它确实如果$ in是一个空字符串.因此,在Powershell中,似乎空字符串和null字符串在switch语句中if被认为是等效的,但在语句中则不是.这是如此混乱,是许多人回避使用Powershell的主要原因之一.
任何人都可以告诉我为什么会这样吗?有谁知道幕后实际做了什么开关?它肯定不是直接比较.
小智 8
Powershell会自动将$ null转换为空字符串.因此,在.NET API调用上使用$ null时,Powershell实际上将其强制转换为空字符串.要在API调用中传递实际的空值,请改用[NullString] :: Value.
| 归档时间: |
|
| 查看次数: |
9323 次 |
| 最近记录: |