Por que os operadores de comparação do PowerShell não enumeram coleções de tamanho 1?
Ao verificar variáveis e coleções de variáveis quanto à nulidade, os operadores de comparação parecem enumerar coleções de tamanho 2 ou mais:
> if ( @( $null, $null ) -eq $null ) { $True } else { $False }
True
Mas não o fazem para coleções de tamanho 1:
> if ( @( $null ) -eq $null ) { $True } else { $False }
False
Estou ciente de que é uma prática recomendada comparar nulos usando o lado esquerdo $null -eq @( $null )
), mas alguém pode explicar o que está acontecendo aqui? Suspeito que ocorra algo mais sutil que afeta outro código que escrevo.
Por que esses dois resultados são diferentes?