gpt4 book ai didi

powershell - 为什么 $false -eq ""是真的?

转载 作者:行者123 更新时间:2023-12-04 02:50:06 25 4
gpt4 key购买 nike

以下代码段输出 true:

$x = ($false -eq "") 
Write-Host $x

$x = ($false -eq 0)
Write-Host $x

由于 $false 和 ""是不同的数据类型,它不应该自动等于 false 吗?

最佳答案

进行比较操作时,PowerShell 会自动尝试强制运算符右侧的对象与左侧的类型匹配。

强制的情况下[string][bool] , 任何非空字符串将评估为 $true , 并且空字符串将评估为 $false .见博文Boolean Values and Operators有关将不同数据类型自动转换为 bool 值的更多信息。

这有时会导致意想不到的结果:

PS C:\> [bool]"$false" 

True
$false 的字符串值是 'False',这是一个非空字符串,计算结果为 $true当转换回 [bool] .

当操作数具有不同的数据类型时,它还使比较操作不可交换:
PS C:\> '' -eq $false
False
PS C:\> $false -eq ''
True

在第一次比较中,值 $false自动转换为字符串以匹配第一个操作数的类型( '' ),因此您实际上是在比较 '' -eq 'False' ,计算结果为 $false .

在第二次比较中,字符串 ''自动转换为 bool 值,同样是为了匹配第一个操作数的类型( $false ),所以这次您实际上是在比较 $false -eq $false ,计算结果为 $true .

关于powershell - 为什么 $false -eq ""是真的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26015072/

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