我的源代碼: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
我的源代碼: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
PowerShell將一些陣列鑄造掛羊頭賣狗肉,當你做+=
,所以最簡單的辦法是做$arr.Add("z")
。然後$arr.Clear()
將按照您的預期行事。
澄清:
@()
是Powershell的陣列。它使用+=
,但你不能Clear
它。 (但是,您可以再次執行$arr = @()
以將其重置爲空陣列。)ArrayList
是.NET集合。它使用.Add
,你可以Clear
它,但由於某種原因,如果你+=
它,Powershell做一些奇怪的數組強制。 (如果有專家關心這個評論,真棒。)
哪個版本的Powershell?當我運行這個時,'$ arr'會在'$ arr + =「z」'後面強制轉換爲'System.Array',所以當我調用Clear()時,我得到以下錯誤:'方法調用失敗,因爲[System.Object []]在Windows 8 RTM上不包含名爲'Clear'的方法。 – David
@David PS 3。 – ComFreek
啊 - 我在Win 7上使用v2。 – David