【问题标题】:Adding elements to a list of class将元素添加到类列表
【发布时间】:2014-06-12 12:22:06
【问题描述】:

我已经定义了 motorData 类如下:

public class motorData
 {
     public int data0 { get; set; }
     public int data1 { get; set; }
     public int data2 { get; set; }
     public int data3 { get; set; } 
     public int data4 { get; set; }
     public int data5 { get; set; }
     public int data6 { get; set; }
     public int data7 { get; set; }
     public int data8 { get; set; }
 }

该类用于Button 点击事件,如下所示:

List<motorData> mtdlist = new List<motorData>();
motorData mtd = new motorData();

private void button2_Click_1(object sender, EventArgs e)
{   
    mtd.data0 = 1;
    mtdlist.Add(mtd);
    mtd.data0 = 2;
    mtdlist.Add(mtd);
    mtd.data0 = 3;
    mtdlist.Add(mtd);
    mtd.data0 = 4;
    mtdlist.Add(mtd);
    mtd.data0 = 5;
    mtdlist.Add(mtd);

}

调用事件后,得到如下结果:

mtdlist[0].data0 = 5;  
mtdlist[1].data0 = 5;  
mtdlist[2].data0 = 5; 
mtdlist[3].data0 = 5;  
mtdlist[4].data0 = 5;

如果我将 motorData 定义为结构,我会得到正确的结果。那么我错过了什么?

【问题讨论】:

标签: c# list class


【解决方案1】:

您将值分配给同一个对象,您应该每次都创建新对象。

List<motorData> mtdlist = new List<motorData>();

private void button2_Click_1(object sender, EventArgs e)
{  
    motorData mtd1 = new motorData();
    mtd1.data0 = 1;
    mtdlist.Add(mtd1);
    motorData mtd2 = new motorData();
    mtd2.data0 = 2;
    mtdlist.Add(mtd2);
    motorData mtd3 = new motorData();
    mtd3.data0 = 3;
    mtdlist.Add(mtd3);
    motorData mtd4 = new motorData();
    mtd4.data0 = 4;
    motorData mt5 = new motorData();
    mtdlist.Add(mtd4);
    mtd5.data0 = 5;
    mtdlist.Add(mtd5);

}

了解更多Structure vs Class

【讨论】:

  • 你能扩展一下吗?
  • @Rawling 展开什么?
  • 几乎就是你在链接中输入的内容:D
猜你喜欢
  • 2014-06-16
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
相关资源
最近更新 更多