私のソースコード:
# $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はいくつかの奇妙な配列強制をします。(専門家がこれについてコメントしたい場合は、素晴らしいです。)