Joh*_*van 5 powershell powershell-5.0
使用PowerShell时,偶尔我们会比较不同类型的对象.一个常见的场景是$int -eq $bool
(即where 0 -eq $false
,0 -ne $true
和任何非零值仅等于true,但不是false).
大多数情况下这是件好事; 有时这很痛苦(例如,如果我在一个有价值的物体上寻找所有属性1
,但我不想要所有有价值的物质$true
).
题
是否有运营商在没有转换的情况下执行此比较; 即基本上与JavaScript的身份运算符(===
)相同;?
奖金问题
如果有这样的操作员,是否有任何容忍度?即,虽然我不想对待1
和true
作为相同的,但如果我可以治疗[int]1
并且[long]1
好像它们一样,它(有时)会有所帮助.
PowerShell不直接提供此类运算符,但您可以使用标准.NET方法[Object]::Equals
进行此类比较.
注意:
它允许类型通过覆盖虚Object.Equals
方法来实现它们自己的相等比较,因此可能有一些奇怪的行为,如果某些自定义类型不正确地实现它.但是所有标准的.NET类型都应该很好,并认为它们只等于同一类型的实例.