为何$false.length在脚本参数场景下返回5而非1?
问题场景与差异原因
执行场景
场景1
$false.length 1
场景2
$var = $false $var.length 1
场景3
param ([string]$var = $false) $var.length 5
差异原因
- 场景1、2中的
$false是布尔类型(System.Boolean),该类型本身没有Length属性。但PowerShell会将所有标量值视为单元素集合,当访问不存在的Length属性时,会返回这个单元素集合的长度,也就是1。 - 场景3中,参数
$var被显式声明为[string]类型,PowerShell会自动对默认值$false执行强制类型转换,将布尔值$false转换为字符串"False",这个字符串的长度为5,因此返回结果是5。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

