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'創建一個包含兩個空數組的新數組 –