2017-08-10 43 views
0

我正在爲用戶表單上的開始值和結束值之間的所有數字執行計算。我的問題是,用戶往往需要計算相同的值,並延長開始時間或延長結束時間,這樣做會引發錯誤在每個按鈕上創建新詞典按

具有相同密鑰的項目已添加

這是我的語法 - 我需要更改以消除此錯誤?

public partial class Test 
{ 
    Dictionary<int, double[]> dictionary = new Dictionary<int, double[]>(); 

    private void btnCalculate_Click(object sender, EventArgs e) 
    { 
     int start = txtStart.Text; 
     int end = Convert.ToInt32(txtEnd.Text)+1; 

     int[] ag = Enumerable.Range(start, end - start).ToArray(); 

     foreach (int a in ag) 
     { 
      dictionary.Add(a, new double[] { a*10, a*15, a*20 }); 
     } 
    } 
} 
+0

,你有沒有考慮清除字典(即dictionary.Clear())第一? Dictionary.Add()在鍵已經存在時拋出。如果使用索引語法,則以前的值將被覆蓋/替換爲不例外。 –

+0

Dictionary.Clear();這樣簡單的解決方案! – IcyPopTarts

+0

這是否解決了它?我可以輸入它作爲答案。編輯:太晚了,其他人已經進入了。 –

回答

3

您可以清除Dictionary<int, double[]>或檢查,如果鍵已經存在添加前:

public partial class Test 
{ 
    Dictionary<int, double[]> dictionary = new Dictionary<int, double[]>(); 

    private void btnCalculate_Click(object sender, EventArgs e) 
    { 
     dictionary.Clear(); 

     int start = txtStart.Text; 
     int end = Convert.ToInt32(txtEnd.Text)+1; 

     int[] ag = Enumerable.Range(start, end - start).ToArray(); 

     foreach (int a in ag) 
     { 
      dictionary.Add(a, new double[] { a*10, a*15, a*20 }); 
     } 
    } 
} 

或:

public partial class Test 
{ 
    Dictionary<int, double[]> dictionary = new Dictionary<int, double[]>(); 

    private void btnCalculate_Click(object sender, EventArgs e) 
    { 
     int start = txtStart.Text; 
     int end = Convert.ToInt32(txtEnd.Text)+1; 

     int[] ag = Enumerable.Range(start, end - start).ToArray(); 

     foreach (int a in ag) 
     { 
      if(!dictionary.ContainsKey(a)) 
       dictionary.Add(a, new double[] { a*10, a*15, a*20 }); 
     } 
    } 
} 

我不知道您的使用情況到底是什麼,但如果你生成每次按下按鈕時,這些值這應該解決您的問題

0

確保你是不是在你的Dictionary重用相同key兩次。

Dictionary類需要keyvaluekey必須始終是唯一的。 value屬性不需要是唯一的,只有key

這是允許的:

dictionary.Add(1, new double[] {10, 12.5, 7}) 
dictionary.Add(2, new double[] {1, 14.5, 2}) 

這是允許

dictionary.Add(1, new double[] {10, 12.5, 7}) 
dictionary.Add(1, new double[] {1, 14.5, 2}) 
相關問題