当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在PowerShell中从数组创建ArrayList?》经验,为你挑选了2个好方法。

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

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

$temp数组在哪里.

我怎样才能做到这一点?



1> dan-gph..:

我无法让那个构造函数工作.然而,这似乎有效:

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

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

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

编辑:

看来你可以像这样使用数组构造函数:

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

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



2> Roman Kuzmin..:

可能是最短的版本:

[System.Collections.ArrayList]$someArray

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


要获得一个实例,这实际上是[System.Collections.ArrayList] $ someArray = @()在Powershell 3.0中适用于我,但我没有检查powershell是否总是使用ArrayList作为数组的实例.
推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有