Benim kaynak kodu temizlenmez:Powershell dizisi
# $arr = @(); results in same behaviour
$arr = New-Object System.Collections.ArrayList;
$arr.Count;
$arr += "z";
$arr.Count;
$arr.Clear();
$arr.Count;
Çıktı:
0
1
1
Benim kaynak kodu temizlenmez:Powershell dizisi
# $arr = @(); results in same behaviour
$arr = New-Object System.Collections.ArrayList;
$arr.Count;
$arr += "z";
$arr.Count;
$arr.Clear();
$arr.Count;
Çıktı:
0
1
1
Powershell yapan bazı dizi-döküm sen +=
yaptığınızda kolay çözüm $arr.Add("z")
yapmaktır böylece, hile. Sonra $arr.Clear()
beklediğiniz gibi davranacaktır.
@()
bir PowerShell dizidir. +=
kullanıyor, ancak Clear
yapamazsınız. (Ancak, boş bir diziye sıfırlamak için $arr = @()
yeniden yapabilirsiniz.)ArrayList
.NET koleksiyonudur. .Add
kullanır ve Clear
yapabilirsiniz, ancak bazı nedenlerden dolayı +=
, Powershell bazı garip dizi zorlama yapar. (Herhangi bir uzman buna yorumda bulundu, harika.)Evet, zor;) Teşekkürler! '+ =' Kullanarak kod tonuna sahip olanlar için, ayrıca şu değişkeni de yeniden başlatabilirsiniz: '$ arr = @();' – ComFreek
Ama neden toplama yapmaya çalışırken 'Koleksiyon bir sabit boyutta oldu? ' bir öğe: '$ arr = @(); $ arr.Add ("z"); 'ArrayList sınıfını kullanırsam, görünmez. – ComFreek
Hangi sürüm Powershell? Bunu çalıştırdığımda, $ arr '' $ arr + = "z" 'yi takip ederek' System.Array' atar, böylece Clear() 'yi çağırdığımda şu hatayı alıyorum:' Yöntem çağırma başarısız oldu çünkü [System.Object []], Windows 8 RTM'de 'Temizle' – David
@David PS 3 adlı bir yöntem içermiyor. – ComFreek
Ah - Win 7'de v2 kullanıyorum. – David