PowerShell: 連想配列に要素(キー・値)を追加する Add

PowerShellの連想配列(ハッシュテーブル)に 要素(キーと値のペア)を追加する場合はAddメソッドを使用します。 Addメソッドの書式は次の通りです。

書式
連想配列.Add(キー, 値)

第1引数にキー、第2引数に値を指定することでキーと値のペアが 連想配列に追加されます。 すでに存在するキーを指定した場合はエラーになります。

次のコードはAddメソッドを使って新しい要素("c", 300)を追加しています。

$h = @{
	a = 100
	b = 200
}

$h.Add("c", 300)

$h

# 実行結果
Name        Value
----        -----
a           100
b           200
c           300

次のコードは、すでに存在するキー"b"を追加しようとした結果、 エラーが発生しています。

$h = @{
	a = 100
	b = 200
}

$h.Add("b", 300)


# 実行結果(エラーメッセージ)
Line |
   7 |  $h.Add("b", 300)
     |  ~~~~~~~~~~~~~~~~
     | Exception calling "Add" with "2" argument(s): "Item has already been added. Key in
     | dictionary: 'b'  Key being added: 'b'"

Add以外での追加方法

Addメソッド以外の方法でも連想配列の要素を追加できます。

連想配列の値の代入時に使う方法で、 キーの部分に新しいキーを指定するだけです。 下の3通りの方法があります。 (関連記事:連想配列の「要素の参照」と「値の代入」

書式
連想配列.新しいキー = 値

連想配列[新しいキー] = 値

連想配列.Item(新しいキー) = 値

次のサンプルコードでは、 先程紹介した3通りの方法で要素を新たに追加しています。

$h = @{
	a = 100
	b = 200
}

$h.c = 300

$h["d"] = 400

$h.Item("e") = 500

$h

# 実行結果
Name        Value
----        -----
a           100
b           200
c           300
d           400
e           500

ただし、 ここで紹介した3つの方法で追加するのはあまりおすすめしません。 一見しただけでは、 値の変更なのか新しい要素の追加なのかがわかりにくいからです。

さらにAddメソッドの場合、すでにあるキーを追加しようとすると エラーが発生して教えてくれますが、 上の3つの方法ではエラーとならずに「代入」になってしまいます。 これはバグの原因の一つとなります。

後々のコードの可読性・メンテナンス性を考えると、 連想配列の要素追加の場合はAddメソッドを使うことをおすすめします。

PowerShell