Trevor if()
Test Sullivan zwingt den $objectArray
zu einem boolean zu werfen.
[bool]$null #is $false
[bool]@(1,2,3) # is $true , so it looks good.
Aber leere Arrays täuschen es:
[bool]@() # is $false , so it's not an accurate test.
Ich schlage vor, $null -eq $objectArray
:
NB. Es öffnet sich wirklich die Frage, warum Sie wollen wissen, ob es $ null ist, speziell. Trevors Antwort ist typisch und gut genug für jeden gewöhnlichen Gebrauch.
NB. Meine Antwort enthält einen ungewöhnlichen, aber nützlichen Vorschlag - wenn Sie einen literalen Wert für eine Seite eines Vergleichs haben, legen Sie ihn auf der linken Seite, wenn Sie können.
Es ist weniger verbreitet, sieht so weniger vertraut, aber es ist belastbarer gegenüber Powershell implizites Casting etwas zu tun, Sie nicht erwarten.
Was '$ objectArray = @(); if (! $ objectArray) {'Es ist $ null in Ordnung!' } '? -> http://i.imgur.com/QddEqRv.png – TessellatingHeckler
Guter Punkt. es ist nicht null. Es ist jedoch eine leere Instanz von Object []! $ ObjectArray gibt true zurück. –
@ Backwards_Dave Ja. Der Test sagt "es ist null", aber es ist nicht. Es ist also kein guter Test. Andere Dinge werden auch nach '[false]' umgewandelt - dieser Test würde sagen, dass andere Dinge null waren, wie '$ objectArray = 0' und' $ objectArray = "" 'ebenfalls. – TessellatingHeckler