Problem with adding items to lists
#3


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



Messages In This Thread
[No subject] - by soryjero - 09-20-2013, 11:10 PM
[No subject] - by Wizatek - 09-21-2013, 07:19 AM
[No subject] - by soryjero - 09-21-2013, 08:38 AM
[No subject] - by Wizatek - 09-21-2013, 09:14 AM
[No subject] - by soryjero - 09-21-2013, 10:28 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)