1
我有两个阵列$A
和$B
都可能是空的。
$A = $B = @()
这工作:
$A+$B | Test-Path
这不起作用:
$A,$B | Test-Path
,并返回错误:
Test-Path : Cannot bind argument to parameter 'Path' because it is an empty array.
我本来期望两个表达式失败,作为+
运营商添加一个空数组到另一个,这意味着结果数组仍然是空的?
查看两种方法的总体类型,表明它们是相同的类型。
PS Y:\> $E = $A+$B
PS Y:\> $E.getType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS Y:\> $F = $A,$B
PS Y:\> $F.getType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
那么,为什么$A+$B
& $A,$B
不同的相互作用与Test-Path
?
'$ A + $ B'连接两个空数组,创建一个浅空数组。 '$ A,$ B'创建一个包含两个空数组的新数组 –