C#で辞書(Dictionary)に追加する2つの方法!

C# C#

C#の辞書(Dictionary)に対して、キーと値を追加する方法について書いています。
辞書(Dictionary)に対して、新しくキーと値を追加したい場合は、下記のどちらかのメソッドを使うことができます。

・Addメソッド
・TryAddメソッド

載せているコードについては、.Netのバージョン6(C#のバージョン10)で確認しました。

辞書(Dictionary)に追加する方法

辞書(Dictionary)にキーと値を追加するには、AddメソッドまたはTryAddメソッドを使います。
また、宣言時に追加しておく方法についても書いています。

宣言時に辞書に「キーと値」を設定する

辞書を作った時に「キーと値」を設定するには、下記のようにします。

var fruits = new Dictionary<string, int>() {{"apple", 130}, {"grape", 230}, {"peach", 330}};

foreach (var fruit in fruits) {
    Console.WriteLine($"{fruit.Key}は{fruit.Value}円です。");
}

fruits変数に対して、新しく辞書のオブジェクトを作成して代入しています。
辞書の型としては、キーが文字列で値が数値になっています。

辞書オブジェクトを作るときに「{{"apple", 130}, {"grape", 230}, {"peach", 330}}」を指定していますが、これが初期で設定される値です。
波括弧({})で括った中に、さらに波括弧で「キーと値」をカンマ区切りで並べています。(“apple”がキー、130が値といった形です)

fruits変数をforeach文で出力すると、下記のように「キーと値」が設定されていることが確認できました。

appleは130円です。
grapeは230円です。
peachは330円です。

Addメソッドを使って追加する

Addメソッドを使って、辞書オブジェクトを作成した後に追加していくこともできます。
例えば、下記のようにして辞書に追加していくことが可能です。

var fruits = new Dictionary<string, int>();
fruits.Add("apple", 100);
fruits.Add("banana", 120);
fruits.Add("grape", 150);

foreach (var fruit in fruits) {
    Console.WriteLine($"{fruit.Key}は{fruit.Value}円です。");
}

先ほどと同じように、fruits変数に対して、辞書オブジェクトを作成しました。
次の行で、辞書オブジェクトからAddメソッドを呼び出して「キーと値」を追加しています。

Addメソッドの第1引数がキーで、第2引数が値になります。
fruits変数の辞書に対して、「キーと値」を3つ追加しました。

foreach文で出力すると、下記のように追加されていることが確認できました。

appleは100円です。
bananaは120円です。
grapeは150円です。

同じキーが被るとエラーになる

Addメソッドで追加するときに、同じキーが既に追加されている場合にはエラーになります。
例えば、下記のような場合です。

var fruits = new Dictionary<string, int>();
fruits.Add("apple", 100);
fruits.Add("banana", 120);
fruits.Add("apple", 150);

appleのキーが最初に追加されていますが、3回目のAddメソッドで、同じキーで追加しようとしています。
その場合には、下記のようにエラーが表示されます。

Unhandled exception. System.ArgumentException: An item with the same key has already been added. Key: apple

Addメソッドで追加する時には、キーが重複しないように注意しましょう。
TryAddメソッドを使うと、同じキーの場合には無視するようになります。

TryAddメソッドを使って追加する

TryAddメソッドを使うことでも、辞書オブジェクトに対して「キーと値」を追加することが可能です。
Addメソッドと違うのは、キーが同じ場合は、後で追加しようとしているものは無視してくれます。(追加されません)

例えば、下記のような場合です。

var fruits = new Dictionary<string, int>();
fruits.TryAdd("apple", 100);
fruits.TryAdd("lemon", 135);
fruits.TryAdd("grape", 150);
fruits.TryAdd("apple", 200);
fruits.TryAdd("peach", 210);
fruits.TryAdd("grape", 210);

foreach (var fruit in fruits) {
    Console.WriteLine($"{fruit.Key}は{fruit.Value}円です。");
}

最初にfruits変数に対して、辞書オブジェクトを作成しました。

次の行からTryAddメソッドを使っています。
Addメソッドと同じように、第1引数がキーで、第2引数が値です。

TryAddしている4回目のキー(apple)と、6回目のキー(grape)が重複しています。
このふたつの「キーと値」は追加されません。

実行してみると、下記のように重複したキーは無視されて、追加されないことが確認できました。

appleは100円です。
lemonは135円です。
grapeは150円です。
peachは210円です。

辞書(Dictionary)に追加する方法のまとめ

今回はC#の辞書に「キーと値」を追加する方法について書きました。
記事の内容をまとめると、下記のようになります。

・辞書オブジェクト作成時に初期値として「キーと値」を設定することができた。
・Addメソッドを使うことで、「キーと値」を辞書に追加できた。
・Addメソッドの第1引数はキー、第2引数は値になる。
・TryAddメソッドも同じように使えた。重複したキーの場合は無視してくれた。

コメント

タイトルとURLをコピーしました