모음에 대해 bool 연산자를 적용하면 해당 컬렉션에 대한 필터로 작동한다는 것을 발견했습니다. 컬렉션에 null 참조가 있는지 확인하는 방법
그래서 다음은 널 (null)이 아닌 모든 요소를 반환합니다$objectArray = @('a','b','c','d')
$objectArray -ne $null
을하지만 어떻게 컬렉션의 참조가 null의 경우 확인할 수 있습니까?
모음에 대해 bool 연산자를 적용하면 해당 컬렉션에 대한 필터로 작동한다는 것을 발견했습니다. 컬렉션에 null 참조가 있는지 확인하는 방법
그래서 다음은 널 (null)이 아닌 모든 요소를 반환합니다$objectArray = @('a','b','c','d')
$objectArray -ne $null
을하지만 어떻게 컬렉션의 참조가 null의 경우 확인할 수 있습니까?
트레버 설리반의 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인지 확인하십시오. Trevor의 대답은 일반적이며 일반적으로 사용하기에 충분합니다.
NB. 내 답변에는 흔하지 않지만 유용한 제안이 포함되어 있습니다. 비교의 한면에 대한 글자 그대로의 가치가있는 경우 가능한 경우 왼쪽에 배치하십시오.
는 너무 익숙 보이지만, 그것은 당신이 기대하지 않는 뭔가를하고 PowerShell을 암시 적 캐스팅에 대한 더 탄력있어, 덜 일반적입니다.참조가 null의 경우 다음 당신을 알려줍니다
$objectArray = @()
if (!$objectArray) {
'The array is not actually null'
}
어떤 약을 : 변수가
테스트 경우는, 하늘의 콜렉션이 거짓으로 캐스팅 때문에
$true
또는$false
항상 작동하지 않습니다 '$ objectArray = @(); if (! $ objectArray) { '그것은 $ null 괜찮아요!' }'? -> http://i.imgur.com/QddEqRv.png – TessellatingHeckler좋은 지적. 그것은 null이 아닙니다. 그러나 Object []의 빈 인스턴스입니다. $ objectArray는 true를 반환합니다. –
@Backwards_Dave 예. 테스트 결과 "null"이지만 그렇지 않습니다. 따라서 그것은 좋은 시험이 아닙니다. 다른 것들도'[false] '로 캐스팅되었습니다.이 테스트는'$ objectArray = 0'와'$ objectArray = ""와 같이 다른 것들이 null이라고 말합니다. – TessellatingHeckler