1. ホーム

[解決済み】Array.Add vs +=.

2022-04-12 02:45:34

質問

PowerShellの配列で面白い挙動を発見しました、つまり、配列を以下のように宣言した場合です。

$array = @()

そして、これにアイテムを追加するために $array.Add("item") メソッドを使用すると、次のようなエラーが発生します。

1 つの引数で "Add" を呼び出す例外: "Collection was of fixed size.".Add" を呼び出す例外が発生しました。

しかし $array += "item" この場合、アイテムは問題なく受け入れられ、quot;fixed size"の制限も適用されないようです。

これはなぜでしょうか?

解決方法は?

を使用する場合 $array.Add() -メソッドを使用すると、既存の配列に要素を追加しようとしています。配列はサイズが固定された集合体なので、拡張できないためエラーになります。

$array += $element を作成します。 新しい 配列は、古い配列と同じ要素に新しい項目を加えたもので、 この新しい大きな配列が、古い配列に代わって $array -変数

配列に要素を追加するには、+= 演算子を使用します。このとき 使用 Windows PowerShell は、実際に新しい配列を作成します。 元の配列に、追加した値を加えたものです。たとえば、次のような要素を追加します。 変数$aの配列に200の値を入力します。

    $a += 200

出典 配列について

+= は高価な操作なので、多くの項目を追加する必要がある場合は、できるだけ少ない操作で追加するようにします。

$arr = 1..3    #Array
$arr += (4..5) #Combine with another array in a single write-operation

$arr.Count
5

それが不可能な場合は、次のような効率的なコレクションを使用することを検討してください。 List または ArrayList (他の回答を参照)。