简体   繁体   English

将元素添加到类列表中

[英]Adding elements to a list of class

I have defined motorData class as below: 我已经定义了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; }
 }

The class is used in a Button click event like this: 此类在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);

}

After calling the event, I get the following results: 调用事件后,我得到以下结果:

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

If I define motorData as structure, I get the correct results. 如果将motorData定义为结构,则会得到正确的结果。 So what am I missing? 那我想念什么呢?

You are assigning the value to the same Object ,You should create new Object each time. 您正在将值分配给相同的对象,您应该每次创建新的对象。

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);

}

To know more about Structure vs Class 要了解有关Structure vs Class更多信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM