我有以下内容:
$p = New-Object PSObject -Property @{PIndex = New-Object System.Collections.ArrayList}
[System.Collections.ArrayList]$pa = @($p) * 5
我希望数组$ pa(包含$ p对象)具有固定大小。到目前为止,一切看起来都不错。但是,当我将元素添加到数组$ pa的一个成员的PIndex中时,它将相同的元素添加到$ pa的所有其他成员中。 所以,我这样做:
$pa[0].PIndex.Add(2)
让我们检查一下:
PS C:\Users> $pa[0].PIndex
2
PS C:\Users> $pa[1].PIndex
2
PS C:\Users> $pa[2].PIndex
2
以此类推。只是想向$ pa [0]的PIndex数组添加元素。为什么还要增加其他成员?我是否缺少语法?
类型看起来不错:
PS C:\Users> $pa.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True ArrayList System.Object
谢谢..
答案 0 :(得分:1)
在代码中,创建一个对象($ p),然后将该一个对象分配给arraylist中的五个不同位置。如果需要五个不同的对象,则需要创建五个不同的对象:
$pa = New-Object System.Collections.ArrayList
for($i=1;$i -le 5;$i++){
$p = New-Object PSObject -Property @{PIndex = New-Object System.Collections.ArrayList}
$pa.Add($p)
}