09-21-2013, 08:38 AM
U are trying to add the same class and just changed some values.
The values inside a class are passed by reference.
So lets say your class named Items. And u do this.
Items itemA = new Items();
itemA.id = 1;
Items itemB = itemA;
itemB.id = 2;
U would think that itemB is a copy of itemA with only a different id.
But its not. itemB is a reference to itemA. So everything u change in itemB gets changed in itemA aswell.
If u really want to make a copy lookup MemberwiseClone()
i think i havent explain my problem well.
i have this:
List<Items> itemA = new List<Items>();
Items itemB;
and i want to add elements to list so i do this:
for(int i = 0; i < 5; i++)
{
itemB.ID = br.readInt32();
itemB.power = br.readInt32();
ItemA.Add(itemB);
}
and the result should be these:
itemA[0].ID = 1
ItemA[0].power = 1
itemA[1].ID = 2
ItemA[1].power = 2
itemA[2].ID = 3
ItemA[2].power = 3
itemA[3].ID = 4
ItemA[3].power = 4
itemA[4].ID = 5
ItemA[4].power = 5
but instead of this, the results are these:
itemA[0].ID = 5
ItemA[0].power = 5
itemA[1].ID = 5
ItemA[1].power = 5
itemA[2].ID = 5
ItemA[2].power = 5
itemA[3].ID = 5
ItemA[3].power = 5
itemA[4].ID = 5
ItemA[4].power = 5
and i dunno why this happen

