2016-08-26 6 views
-1

私はキーがIDで値がクラスタイプの辞書にデータを保存しようとしています。クラスプロパティはすべて同時に追加されるわけではないので、コンストラクタを別の時に使用して新しい値を追加する方法がない限り、コンストラクタを使用していませんか?以下のコードはコンパイルされますが、キーがすでに追加されているというランタイムエラーが発生します。ヘルプがありがとうございます。辞書に値を追加する<int,class>は一度もありません

public class Students 
     { 
      public string FirstName { get; set; } 
      public string SurName { get; set; } 
      public int Age { get; set; } 
      public double Score { get; set; }    
     } 

     public void cmdTEST_Click(object sender, EventArgs e) 
     { 

      Dictionary<int, Students> Data = new Dictionary<int, Students>(); 
      Data.Add(5, new Students { FirstName = "Bob" }); 
      Data.Add(5, new Students { Age = 34 });    // run time error - "key already added" 
      Data.Add(5, new Students { Score = 62 }); 

      // extract data 
      double Score5 = Data[5].Score; 
      double Age5 = Data[5].Age; 
     } 
+1

を追加するためにkeyを使用することができますはい、あなたは、そのIDとして5で複数のエントリを追加しています、明白にそれはエラーを投げる – Shiham

+0

1つのステートメントだけを使用してください。 ** Data.Add(5、新しいStudents {//ここにすべてのフィールドを入力}); ** –

+0

あなたの質問のタイトルを改善する必要があります –

答えて

4

あなたは同じキーを複数回追加していますが、これは許可されていません。あなたは

Dictionary<int, Students> Data = new Dictionary<int, Students>(); 
Data.Add(5, new Students { FirstName = "Bob", Age = 34, Score = 62 }); 

以下のように一度にすべてのプロパティを追加することができますし、値を追加したい場合は、後であなたは値に

Data.Add(5, new Students { FirstName = "Bob"}); 
Data[5].Age = 34; 
Data[5].Score = 62; 
+0

ありがとう、それは本当に役立ちます。 – Zeus

関連する問題