PowerShell中Null数组的定义、声明及@($null)的判定疑问
PowerShell中的Null数组相关问题
一、可被视为Null数组的情况
在PowerShell里,真正的Null数组指的是变量本身的值为$null的数组类型变量——也就是该变量未引用任何数组对象,本质是变量为$null,而非数组内容包含$null。
另外有一种容易混淆的是空数组(元素个数为0的数组),它不是$null,但有时会被误称为"Null数组",严格来说空数组是独立的概念。
二、如何声明Null数组
直接将变量赋值为$null即可:
$nullArray = $null
此时用$null -eq $nullArray会返回$true,说明变量本身是$null。
如果需要声明空数组(元素数为0),使用:
$emptyArray = @()
空数组的Count属性为0,它不是$null,但表示没有任何元素。
三、@($null)不是Null数组的原因
你定义的$array = @($null),本质是创建了一个包含单个$null元素的数组对象,而非数组本身为$null:
- 这个数组是真实存在的对象,执行
$array.Count会返回1,证明它包含一个元素。 - 当用
$null -eq $array比较时,PowerShell检查的是数组变量本身是否为$null,由于该变量引用了一个数组对象,所以返回$false,不会输出指定内容。
如果要判断数组中是否包含$null元素,可以用:
if ($array -contains $null) { 'Array contains $null element' }
如果要判断是否是空数组,可检查元素个数:
if ($array.Count -eq 0) { 'Array is empty' }
内容的提问来源于stack exchange,提问作者Sudipto Pramanik
相关产品推荐
相关产品推荐

