C# 在每次按下按钮时创建新词典

C# 在每次按下按钮时创建新词典,c#,.net,dictionary,c#-4.0,C#,.net,Dictionary,C# 4.0,我正在计算用户窗体上起始值和结束值之间的所有数字。我的问题是,用户通常需要计算相同的值,并扩展起点或终点,这样做会抛出错误 已添加具有相同密钥的项 这是我的语法-我需要修改什么来删除此错误 公共部分类测试 { 字典=新字典(); 私有void btnCalculate\u单击(对象发送者,事件参数e) { int start=txtStart.Text; int end=Convert.ToInt32(txtEnd.Text)+1; int[]ag=Enumerable.Range(start,

我正在计算用户窗体上起始值和结束值之间的所有数字。我的问题是,用户通常需要计算相同的值,并扩展起点或终点,这样做会抛出错误

已添加具有相同密钥的项

这是我的语法-我需要修改什么来删除此错误

公共部分类测试
{
字典=新字典();
私有void btnCalculate\u单击(对象发送者,事件参数e)
{
int start=txtStart.Text;
int end=Convert.ToInt32(txtEnd.Text)+1;
int[]ag=Enumerable.Range(start,end-start).ToArray();
foreach(国际货币单位制)
{
加上(a,新的双[]{a*10,a*15,a*20});
}
}
}

确保不要在
词典中重复使用相同的
键两次

字典
类需要一个
和一个
,并且
必须始终是唯一的。
属性不需要是唯一的,只有

这是允许的:

dictionary.Add(1,新的双精度[]{10,12.5,7})
dictionary.Add(2,新的双[]{1,14.5,2})
这是不允许的

dictionary.Add(1,新的双精度[]{10,12.5,7})
dictionary.Add(1,新的双[]{1,14.5,2})

确保不要在
词典中重复使用相同的
键两次

字典
类需要一个
和一个
,并且
必须始终是唯一的。
属性不需要是唯一的,只有

这是允许的:

dictionary.Add(1,新的双精度[]{10,12.5,7})
dictionary.Add(2,新的双[]{1,14.5,2})
这是不允许的

dictionary.Add(1,新的双精度[]{10,12.5,7})
dictionary.Add(1,新的双[]{1,14.5,2})

您可以在添加以下内容之前,清除
词典或检查密钥是否已存在:

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 });
       }
   }
} 
公共部分类测试
{
字典=新字典();
私有void btnCalculate\u单击(对象发送者,事件参数e)
{
dictionary.Clear();
int start=txtStart.Text;
int end=Convert.ToInt32(txtEnd.Text)+1;
int[]ag=Enumerable.Range(start,end-start).ToArray();
foreach(国际货币单位制)
{
加上(a,新的双[]{a*10,a*15,a*20});
}
}
} 
或:

公共部分类测试
{
字典=新字典();
私有void btnCalculate\u单击(对象发送者,事件参数e)
{
int start=txtStart.Text;
int end=Convert.ToInt32(txtEnd.Text)+1;
int[]ag=Enumerable.Range(start,end-start).ToArray();
foreach(国际货币单位制)
{
如果(!dictionary.ContainsKey(a))
加上(a,新的双[]{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)
   {
       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 });
       }
   }
} 
公共部分类测试
{
字典=新字典();
私有void btnCalculate\u单击(对象发送者,事件参数e)
{
dictionary.Clear();
int start=txtStart.Text;
int end=Convert.ToInt32(txtEnd.Text)+1;
int[]ag=Enumerable.Range(start,end-start).ToArray();
foreach(国际货币单位制)
{
加上(a,新的双[]{a*10,a*15,a*20});
}
}
} 
或:

公共部分类测试
{
字典=新字典();
私有void btnCalculate\u单击(对象发送者,事件参数e)
{
int start=txtStart.Text;
int end=Convert.ToInt32(txtEnd.Text)+1;
int[]ag=可枚举的.Range(start,end-start).toaray();
foreach(国际货币单位制)
{
如果(!dictionary.ContainsKey(a))
加上(a,新的双[]{a*10,a*15,a*20});
}
}
}

我不知道您的用例是什么,但这应该可以解决您的问题

如果每次按下按钮时都生成这些值,您是否考虑过先清除字典(即dictionary.Clear())?Dictionary.Add()在密钥已存在时抛出。如果使用索引语法,则会覆盖/替换上一个值,没有异常。Dictionary.Clear();这么简单的解决方案!这解决了吗?我可以输入它作为答案。编辑:太晚了,其他人已经输入了。如果每次按下按钮时都生成这些值,您是否考虑过先清除字典(即dictionary.Clear())?Dictionary.Add()在密钥已存在时抛出。如果使用索引语法,则会覆盖/替换上一个值,没有异常。Dictionary.Clear();这么简单的解决方案!这解决了吗?我可以输入它作为答案。编辑:太晚了,其他人已经输入了。