Reputation: 8636
I have defined motorData class as below:
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:
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. So what am I missing?
Upvotes: 1
Views: 70
Reputation: 222532
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
Upvotes: 1