您的 2 个示例产生完全相同的结果,一个包含 2 个元素的平面数组,因为附加一个空数组 ($arr+=@()
) 不会以任何方式修改数组。
示范:
PS C:\> $arr = @()
PS C:\> $arr += @('server1', 200)
PS C:\> $arr.Count
2
PS C:\> Format-Custom -InputObject $arr
server1
200
PS C:\> $arr = @()
PS C:\> $arr += @()
PS C:\> $arr += @('server1', 200)
PS C:\> $arr.Count
2
PS C:\> Format-Custom -InputObject $arr
server1
200
当您使用追加运算符 (+=
)有两个数组 PowerShell 基本上连接数组。要将数组作为嵌套元素附加到第一个数组,您需要在第二个数组前面添加一元数组构造运算符 (,
).
PS C:\> $arr = @()
PS C:\> $arr += ,@('server1', 200)
PS C:\> $arr += ,@('server2', 200)
PS C:\> $arr.Count
2
PS C:\> Format-Custom -InputObject $arr
[
server1
200
]
[
server2
200
]
如果您事先知道元素的数量,您还可以预先创建所需大小的数组并将嵌套数组分配为其元素。这不需要逗号运算符。
PS C:\> $arr = New-Object Object[] 2
PS C:\> $arr.Count
2
PS C:\> $arr[0] = @('server1', 200)
PS C:\> $arr[1] = @('server2', 200)
PS C:\> Format-Custom -InputObject $arr
[
server1
200
]
[
server2
200
]