如何在PowerShell中从数组创建ArrayList?

时间:2009-03-06 12:04:09

标签: powershell

我有一个数组中的文件列表。我想枚举这些文件,并从中删除特定文件。显然我无法从数组中删除项目,因此我想使用ArrayList。 但以下内容对我不起作用:

$temp = Get-ResourceFiles
$resourceFiles = New-Object System.Collections.ArrayList($temp)

其中$temp是数组。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:34)

我也无法使用该构造函数。然而,这似乎有效:

# $temp = Get-ResourceFiles
$resourceFiles = New-Object System.Collections.ArrayList($null)
$resourceFiles.AddRange($temp)

您还可以在构造函数中传递一个整数来设置初始容量。

当您说要枚举文件时,您的意思是什么?为什么不能将想要的值过滤成新数组呢?

修改

似乎你可以像这样使用数组构造函数:

$resourceFiles = New-Object System.Collections.ArrayList(,$someArray)

请注意逗号。我相信正在发生的事情是,当您调用.NET方法时,您始终将参数作为数组传递。 PowerShell解压缩该数组并将其作为单独的参数传递给方法。在这种情况下,我们不希望PowerShell解压缩数组;我们想将数组作为一个单元传递。现在,逗号运算符创建数组。所以PowerShell解压缩数组,然后我们用逗号运算符再次创建数组。我认为这是正在发生的事情。

答案 1 :(得分:23)

可能是最短的版本:

[System.Collections.ArrayList]$someArray

它也更快,因为它不会调用相对昂贵的New-Object