C#字典不断将值更改为最后添加的值。

时间:2016-02-03 21:07:47

标签: c# dictionary visual-studio-2015

当我尝试将新名称和数字从文本框添加到字典中,然后尝试将字典的内容添加到listBox时,所有先前的条目都是相同的。就像我添加" Bob Johnson 42"," Jim Smith 33"," Peter White 21"。当我把它放在ListBox中时,它会像以下一样: 彼得怀特21 彼得怀特21 彼得怀特21

我做错了什么? 这是代码。

private void button1_Click(object sender, EventArgs e)
    {
           String name = this.textBox1.Text;
           int testNumber = int.Parse(textBox2.Text);
           submittedTests.Add(this.textBox1.Text, testNumber);

        foreach (var x in submittedTests)
        {
            listBox1.Items.Add(name + " " + testNumber);
        }

   }

3 个答案:

答案 0 :(得分:3)

您正在使用循环外部nametestnumber的值

   foreach (var x in submittedTests)
    {
        listBox1.Items.Add(name + " " + testNumber);
    }

应该是

   foreach (var x in submittedTests)
    {
        listBox1.Items.Add(x.name + " " + x.testNumber);
    }

或如果submittedTests是字典:

foreach (var x in submittedTests)
{
    listBox1.Items.Add(x.Key + " " + x.Value);
}

答案 1 :(得分:1)

private void button1_Click(object sender, EventArgs e)
{
       String name = this.textBox1.Text;
       int testNumber = int.Parse(textBox2.Text);
       submittedTests.Add(this.textBox1.Text, testNumber);

    foreach (var x in submittedTests)
    {
        listBox1.Items.Add(x.Key + " " + x.Value);
    }
}

答案 2 :(得分:0)

更改

listBox1.Items.Add(name + " " + testNumber);

listBox1.Items.Add(x.Key + " " + x.Value);