gpt4 book ai didi

function - 函数中的空参数不为 Null

转载 作者:行者123 更新时间:2023-12-02 22:16:08 24 4
gpt4 key购买 nike

鉴于此基本功能:

Function TestFunction {
Param ( [int]$Par1, [string]$Par2, [string]$Par3 )
If ($Par1 -ne $Null) { Write-Output "Par1 = $Par1" }
If ($Par2 -ne $Null -or $Par2 -ne '') { Write-Output "Par2 = $Par2" }
If ($Par3 -ne $Null) { Write-Output "Par3 = $Par3" }
}
TestFunction -Par1 1 -Par3 'par3'

...输出是:

Par1 = 1
Par2 =
Par3 = par3

即使我没有将任何内容传递到 $Par2 变量中,它仍然不是 Null 或空。发生了什么,如何重写该语句,以便第二个 If 语句计算结果为 False 并且脚本 block 不会被执行?

(我添加了 -or $Par2 -ne '' 只是为了测试,无论有没有它,它的行为都是一样的。)

最佳答案

您的程序中存在逻辑错误:$Par2始终不等于$null 不等于''

要修复逻辑,您应该在此处使用 -and 而不是 -or:

If ($Par2 -ne $Null -and $Par2 -ne '') { Write-Output "Par2 = $Par2" }

但是,因为您将 $Par2 参数转换为函数参数列表中的字符串:

Param ( [int]$Par1, [string]$Par2, [string]$Par3 )
^^^^^^^^

$Par2 -ne $Null 的检查是不必要的,因为 $Par2 将始终是字符串类型(如果您不给它一个值,它将是分配给'')。所以,你实际上应该写:

If ($Par2 -ne '') { Write-Output "Par2 = $Par2" }

或者,因为 '' 的计算结果为 false,您可能会这样做:

If ($Par2) { Write-Output "Par2 = $Par2" }

关于function - 函数中的空参数不为 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29724851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com