为什么'$ true -eq“ string”'返回$ true?

帕特里克

在powerShell中,使用“ -eq”运算符比较带有字符串的布尔值,它将始终返回与我以前进行比较的布尔值。

例如

$shouldBeFalse = $true -eq "hello"
$shouldBeTrue = $false -eq "hello"

变量$ shouldBeFalse为$ true。变量$ shouldBeTrue为$ false。

我不得不使用“等于”方法:

$shouldBeFalse = $true.Equals("hello")

在这种情况下,$ shouldBeFalse是$ false。

但是,为什么用布尔型的结果返回-eq运算符呢?

马特

PowerShell将始终使用左侧参数的类型进行评估。由于左侧有一个布尔值,PowerShell将尝试将“ Hello”强制转换为布尔值,以便使用进行评估-eq

因此,在您的情况下,由于它不是长度为零的字符串,因此将"hello"其转换为布尔值[bool]"hello",该将计算为True。如果执行相反的操作,则会看到类似的行为。

PS C:\> "hello" -eq $true
False

PS C:\> [bool]"hello" -eq $true
True

在第一种情况下,$true将其转换为字符串“ true”,该字符串不等于“ hello”,因此为false。在第二种情况下,我们将“ hello”强制转换为布尔值,因此-eq将比较布尔值。由于上述原因,评估结果为True。

这个答案还有一个很好的解释,它可能会使您的问题标记为重复:为什么$ false -eq“” true?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 gremlin 控制台上,为什么谓词“eq”在“is”内返回 false 而直接比较返回 true?

来自分类Dev

为什么$ false -eq“”为true?

来自分类Dev

为什么lodash`_.all([true,true,true],true);`返回`false`?

来自分类Dev

为什么if语句返回`true`?

来自分类Dev

为什么if语句返回True?

来自分类Dev

为什么String.Concat返回“ True”而不是“ true”(与false相同)?

来自分类Python

为什么当[[]是[]]而'{}是{}'返回False时,'()是()'返回True?

来自分类Dev

Bash:为什么[[zero -eq 0]]评估为true?

来自分类Dev

为什么此虚拟方法返回true?

来自分类Dev

为什么cSplit返回TRUE而不是字符

来自分类Python

为什么`None is None is None`返回True?

来自分类Dev

为什么-d对空变量返回true

来自分类Java

为什么“ abcd” .StartsWith(“”)返回true?

来自分类Dev

为什么在Lua中“ not nil”返回true?

来自分类Dev

为什么sameElements对于集合返回true?

来自分类Java

为什么Pattern不返回true

来自分类Dev

JS:为什么这返回true?

来自分类Javascript

为什么(0 <5 <3)返回true?

来自分类Dev

为什么这个 if 语句总是返回 true?

来自分类Dev

为什么字符指针“ ==“返回true?

来自分类Dev

为什么此if语句总是返回true

来自分类Dev

Ruby:为什么Hash === {}返回true?

来自分类Dev

为什么eof()永远不会返回true?

来自分类Dev

Greasemonkey:为什么if语句总是返回true?

来自分类Dev

为什么从函数返回true或false?

来自分类Dev

为什么NaN =!NaN返回true?

来自分类Dev

为什么`(“” ||“ word”)== true`返回false?

来自分类Dev

为什么SomeStruct()是AnyObject返回true?

来自分类Dev

为什么我的AsyncValidator总是返回true?

Related 相关文章

热门标签

归档