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();这么简单的解决方案!这解决了吗?我可以输入它作为答案。编辑:太晚了,其他人已经输入了。