6

私のソースコード:

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

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

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

出力:

0
1
1

4

1 に答える 1

23

Powershellは、実行時に配列キャストのトリックを実行する+=ため、簡単な解決策は実行することです$arr.Add("z")。その後$arr.Clear()、期待どおりに動作します。

明確にするために:

  1. @()Powershellアレイです。を使用し+=ますが、使用できませんClear。(ただし、$arr = @()再度実行して、空のアレイにリセットすることはできます。)
  2. ArrayList.NETコレクションです。それはを使用します.Add、そしてあなたはClearそれをすることができます、しかしあなたがそれをするならば、何らかの理由+=で、Powershellはいくつかの奇妙な配列強制をします。(専門家がこれについてコメントしたい場合は、素晴らしいです。)
于 2012-11-08T19:41:32.427 に答える