Arrays 如何在Powershell中创建空数组?

Arrays 如何在Powershell中创建空数组?,arrays,powershell,Arrays,Powershell,我想在Powershell中创建一个空数组来保存值的“元组”(数组是不可变的) 因此,我尝试以下方法: $arr的类型是对象[]。我已经读到+=@(1,2)将给定元素(即@(1,2))附加到$arr(实际上创建了一个新数组)。但是,在这种情况下,数组似乎是连接在一起的,为什么 $arr = @() $arr += @(1,2) $arr.Length // 2 (not 1) 如果我这样做,似乎$arr包含两个数组@(1,2),@(3,4),这就是我想要的: $arr = @() $arr +

我想在Powershell中创建一个空数组来保存值的“元组”(数组是不可变的)

因此,我尝试以下方法:

$arr
的类型是
对象[]
。我已经读到
+=@(1,2)
将给定元素(即
@(1,2)
)附加到
$arr
(实际上创建了一个新数组)。但是,在这种情况下,数组似乎是连接在一起的,为什么

$arr = @()
$arr += @(1,2)
$arr.Length // 2 (not 1)
如果我这样做,似乎
$arr
包含两个数组
@(1,2),@(3,4)
,这就是我想要的:

$arr = @()
$arr += @(1,2),@(3,4)
$arr.Length // 2

如何初始化数组的空数组,以便一次可以添加一个子数组,如
$arr+=@(1,2)

运算符连接数组。要将数组作为单个元素添加,请在要添加的元素前面加逗号。类似于
@()+,(1,2)+,(3,4)

布鲁斯·帕耶特的答案会奏效。语法对我来说似乎有点笨拙,但它确实有效。至少它不是Perl

另一种方法是使用
ArrayList
。对我来说,这种语法更清晰,而且在六个月内更容易被其他开发人员(或我自己)理解

[System.Collections.ArrayList]$al = @()

$al.Add(@(1,2))
$al.Add(@(3,4))

foreach ($e in $al) {
    $e
    $e.GetType()
}

据我所知,您不能在PowerShell中以本机方式执行此操作,也不能使用
[System.Array]
类型执行此操作。在这两种情况下,似乎都需要定义数组的长度和类型。因为我想要一个完全空的数组,能够在数组中存储任何类型的值,所以我这样做了

$x=[System.Collections.ArrayList]::new()
$x.Count
$x.GetType()

$x.Add([System.Collections.ArrayList]::new()) > $null
$x.Count
$x[0].Count
$x[0].GetType()

$x[0].Add("first element") > $null
$x.Count
$x[0].Count
$x[0][0]