Ich habe zwei Arrays $A
und $B
beide möglicherweise leer sein könnte.
$A = $B = @()
Dies funktioniert:
$A+$B | Test-Path
Dies funktioniert nicht:
$A,$B | Test-Path
und gibt den Fehler:
Test-Path : Cannot bind argument to parameter 'Path' because it is an empty array.
ich beide Ausdrücke erwartet hätte zum Scheitern verurteilt, wie der +
Operator ist Hinzufügen eines leeren Array zu einem anderen, was bedeutet, dass das resultierende Array noch leer ist?
Betrachtet man die Gesamttypen beider Methoden, so zeigt sich, dass sie vom selben Typ sind.
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
Warum tut $A+$B
& $A,$B
interact anders mit Test-Path
?
'$ A + $ B' verknüpft die beiden leeren Arrays zu einem flachen leeren Array. '$ A, $ B' erstellt ein neues Array mit zwei leeren Arrays –