У меня есть два массива $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' создает новый массив, содержащий два пустых массива –