Powershell数组未清除

时间:2012-11-08 19:09:39

标签: arrays powershell

我的源代码:

# $arr = @(); results in same behaviour
$arr = New-Object System.Collections.ArrayList;

$arr.Count;
$arr += "z";

$arr.Count;
$arr.Clear();
$arr.Count;

输出:

  

0
  1
  1

1 个答案:

答案 0 :(得分:17)

当您执行+=时,Powershell会执行一些阵列转换技巧,因此简单的解决方案是执行$arr.Add("z")。然后$arr.Clear()将按照您的预期行事。

澄清:

  1. @()是一个Powershell数组。它使用+=,但您不能Clear。 (但是,您可以再次$arr = @()将其重置为空数组。)
  2. ArrayList是.NET集合。它使用.Add,你可以Clear它,但出于某种原因,如果你+=它,Powershell会做一些奇怪的数组强制。 (如果有任何专家关心这一点,很棒。)