#Requires -Version 2.0
[CmdletBinding()]
Param(
[Parameter()] [string] $MyParam = $null
)
if($MyParam -eq $null) {
Write-Host 'works'
} else {
Write-Host 'does not work'
}
输出 "does not work" => 看起来字符串会被隐式地从 null 转换成空字符串?为什么?如何测试一个字符串是空还是真正的 $null 呢?这应该是两个不同的值!
if ($null -eq $value)
而不是if ($value -eq $null)
。 PowerShell脚本分析器模块也会发出此警告。请参见https://www.spcaf.com/blog/powershell-null-comparison/。 - oɔɯǝɹif ([String::IsNullOrEmpty($stringParam)])
,这会稍微改变一下行为(我认为是变得更好了),但读起来很流畅,并且消除了顺序问题。无论如何,谢谢,这对我帮助很大。 - Lee Richardson