私のソースコード:
# $arr = @(); results in same behaviour
$arr = New-Object System.Collections.ArrayList;
$arr.Count;
$arr += "z";
$arr.Count;
$arr.Clear();
$arr.Count;
出力:
0
1
1
私のソースコード:
# $arr = @(); results in same behaviour
$arr = New-Object System.Collections.ArrayList;
$arr.Count;
$arr += "z";
$arr.Count;
$arr.Clear();
$arr.Count;
出力:
0
1
1
Powershellは、実行時に配列キャストのトリックを実行する+=ため、簡単な解決策は実行することです$arr.Add("z")。その後$arr.Clear()、期待どおりに動作します。
明確にするために:
@()Powershellアレイです。を使用し+=ますが、使用できませんClear。(ただし、$arr = @()再度実行して、空のアレイにリセットすることはできます。)ArrayList.NETコレクションです。それはを使用します.Add、そしてあなたはClearそれをすることができます、しかしあなたがそれをするならば、何らかの理由+=で、Powershellはいくつかの奇妙な配列強制をします。(専門家がこれについてコメントしたい場合は、素晴らしいです。)