if()
тест Тревора Салливана заставляет $objectArray
бросить в булево.
[bool]$null #is $false
[bool]@(1,2,3) # is $true , so it looks good.
Но пустые массивы ввести его в заблуждение:
[bool]@() # is $false , so it's not an accurate test.
Я предлагаю $null -eq $objectArray
:
NB. Это действительно открывает вопрос о том, зачем вам хочу, чтобы узнать, действительно ли это $ null. Ответ Тревора типичен и достаточно хорош для любого общего использования.
NB. Мой ответ включает необычное, но полезное предложение - когда у вас есть буквальное значение для одной стороны сравнения, поместите его слева, если сможете.
Это меньше общего, так выглядит менее знакомы, но это более устойчивыми против PowerShell неявной делать то, что вы не ожидали.
Что о '$ objectArray = @(); if (! $ objectArray) {'Это $ нуль! } '? -> http://i.imgur.com/QddEqRv.png – TessellatingHeckler
Хорошая точка. это не null. Это пустой экземпляр Object [], однако! ObjectArray возвращает true. –
@Backwards_Dave Да. Тест говорит, что «это нулевое», но это не так. Так что это не очень хороший тест. Другие вещи, относящиеся к '[false]', также - этот тест сказал бы, что другие вещи были нулевыми, например '$ objectArray = 0' и' $ objectArray = "" '. – TessellatingHeckler