Powershell: Dodawanie elementów do listy kończy się błędem „Rozmiar kolekcji jest stały.”

5-Mar-2015

Załóżmy, że chcesz mieć listę wartości i dynamicznie dodawać do niej elementy:

$list = @(„a”,”b”)
$list.Add(„c”)

Niestety, próba dodania elementu kończy się błędem:

Exception calling „Add” with „1” argument(s): „Rozmiar kolekcji jest stały.”
At line:1 char:1
+ $list.Add(„a”)
+ ~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NotSupportedException

Wszystko dlatego, że lista ma stały rozmiar, co sprawdzisz:

$list.IsFixedSize

Jak obejść problem?

Rozwiązanie 1:

Dodawaj elementy wykorzystując operator += zamiast metodę Add:

$list+=”x”

add_list

Rozwiązanie 2:

Skorzystaj z [System.Collections.ArrayList]. Ten typ nie jest stałego rozmiaru i pozwala na dodawanie nowych elementów.

[System.Collections.ArrayList]$ArrayList = @()
$ArrayList.Add(„a”)
$ArrayList.Add(„b”)
$ArrayList.Add(„c”)

 

Dodaj komentarz:

Autor: Rafał Kraik