Powershell数组未清除

Com*_*eek 6 arrays powershell

我的源代码:

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

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

$arr.Count;
$arr.Clear();
$arr.Count;
Run Code Online (Sandbox Code Playgroud)

输出:

0
1
1

Dan*_*tch 18

当你这么做时+=,Powershell会做一些阵列式的诡计,所以简单的解决方案就是做$arr.Add("z").然后$arr.Clear()会像你期望的那样行事.

澄清:

  1. @()是一个Powershell数组.它使用+=,但你不能Clear.(但是,您可以$arr = @()再次将其重置为空数组.)
  2. ArrayList是.NET集合.它使用.Add,你可以Clear,但由于某种原因,如果你+=,Powershell做一些奇怪的阵列强制.(如果有任何专家对此发表评论,真棒.)