【C#】同一のキーを含む項目が既に追加されています。の解決方法【System.ArgumentException】

C#,エラー/例外

「同一のキーを含む項目が既に追加されています。」のエラー解決方法

C#で発生するエラー(例外)
System.ArgumentException: 同一のキーを含む項目が既に追加されています。


上記のエラー(例外)が発生したときの解決方法をご紹介します。

下記にC#で発生する例外処理の一覧をまとめていますので解決できない場合は合わせてご確認ください。
⇒例外処理クラス一覧まとめ【原因と解決方法】

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選

C# 同一のキーを含む項目が既に追加されています。のエラーの原因

System.ArgumentException: 同一のキーを含む項目が既に追加されています
のエラーの原因は
重複禁止の項目に同一のキーを追加した
からです。

エラーコードの例は下記の通りです。

var dc = new Dictionary<int, string>();
dc.Add(1, "orange");
dc.Add(2, "apple");
dc.Add(3, "banana");
dc.Add(3, "orange");// Dictionaryのキーが重複したためエラーが発生する

ディクショナリー(Dictionary)はキーと値のペア(KeyValuePair)のコレクションになります。
リストのがキー(Key)がインデックスを表し、値(Value)は要素の値を指します。

このキー(Key)の値は重複禁止です。
重複するとArgumentExceptionエラーが発生します。

「System.ArgumentException: 」の詳細はこちらから

C# 同一のキーを含む項目が既に追加されています。エラーの解決方法

System.ArgumentException: 同一のキーを含む項目が既に追加されていますのエラーを解決する方法をご紹介します。

①同一のキーを別の値に変更する

var dc = new Dictionary<int, string>();
dc.Add(1, "orange");
dc.Add(2, "apple");
dc.Add(3, "banana");
dc.Add(4, "orange");// Dictionaryのキー重複が解消されたため、エラーが発生しない。(Valueは重複OK)

上記のようにキー(Key)の値を重複しないように設定するとエラーは解消されます。

Addメソッドを使用せず、同一キーの値を直接上書きする

var dc = new Dictionary<int, string>();
dc.Add(1, "orange");
dc.Add(2, "apple");
dc.Add(3, "banana");
dc[3] = "orange";// 同一キーの値を変更したい場合は直接上書きする

同一キーの値を上書きしたい場合は、ディクショナリーの参照値にキーの値を設定し、バリュー値を代入します。

③Addメソッドの直前に、同一キーが存在するか確認する

var dc = new Dictionary<int, string>();
dc.Add(1, "orange");
dc.Add(2, "apple");
dc.Add(3, "banana");
// DictionaryのAddメソッドを使用する存在チェックを行う
if (!dc.ContainsKey(3))
{
    dc.Add(3, "orange");
}
System.Console.WriteLine(dc[3]);

ContainsKey指定したキーがディクショナリー内に存在するかどうか事前にチェックします。
事前チェックを行うことでエラーを回避することができます。

以上、上記3つが「System.ArgumentException: 同一のキーを含む項目が既に追加されています。」の解決策です。



エラーを解決できなくて途方に暮れている人へ。

■無料プログラミング講座を開設しています!
下記にVisual Studioを使ったC#プログラミング初心者向け完全ガイドを掲載しています。

このガイドを一通り勉強すれば、C#プログラミングの基礎が学べます。
是非チャレンジしてみてください!

C#初心者向けに始め方ガイドを作成しています。
筆者

プログラミング初心者の方はぜひチャレンジしてみてください!!

C#,エラー/例外

Posted by 9noike