Dictionary の初期化方法 ({} と [] の違い)
C# では、Dictionary<TKey, TValue>
を初期化する方法として { key, value }
形式 と ["key"] = value
形式 の 2 つがあります。
1. { key, value }
形式の初期化
この方法は、Dictionary<TKey, TValue>
の標準的な初期化方法で、Add
メソッドと同じ動作をします。
var dict = new Dictionary<string, int>
{
{ "apple", 1 },
{ "banana", 2 },
{ "cherry", 3 }
};
ポイント
Add
メソッドを内部的に使用するため、同じキーがあると例外 (ArgumentException
) が発生 する。- 可読性が高く、従来の
Dictionary<TKey, TValue>
の初期化に適している。
この書き方は、次のコードと同じ意味を持ちます。
var dict = new Dictionary<string, int>();
dict.Add("apple", 1);
dict.Add("banana", 2);
dict.Add("cherry", 3);
2. ["key"] = value
形式の初期化
C# 6 以降では、インデクサー []
を使って Dictionary<TKey, TValue>
を初期化することもできます。
var dict = new Dictionary<string, int>
{
["apple"] = 1,
["banana"] = 2,
["cherry"] = 3
};
ポイント
{}
の中で[
を使うことで、より簡潔に記述できる。Add
とは異なり、同じキーを設定すると上書きされる。(dict["apple"] = 100;
のような振る舞い)Dictionary<TKey, TValue>
だけでなく、カスタムクラスのインデクサーにも利用可能。
この書き方は、次のコードと同じ意味を持ちます。
var dict = new Dictionary<string, int>();
dict["apple"] = 1;
dict["banana"] = 2;
dict["cherry"] = 3;
3. {}
と []
の違いと使い分け
初期化方法 | 特徴 |
---|---|
{ "key", value } | Add と同様の動作、キーが重複するとエラー |
["key"] = value | キーが重複しても上書き可能、簡潔な記述が可能 |
どちらの方法も利用可能なので、エラーを防ぐために Add
の振る舞いが欲しいなら {}
、簡潔に記述したいなら []
を選ぶとよいでしょう。
ディスカッション
コメント一覧
まだ、コメントがありません