for(int u = 0; u < Item.Count; u++) { if (Item[u].ID == item.ID) { Item[u].Size += item.Size; } else { Item.Add(item); } }
попробуй написать комментарий к каждой строчке чтобы понять в чем ошибка, потому что это настока очевидно что я хз. этот код как бы кричит: "переделай меня, тут баг"
Сообщение отредактировал drcrack - Среда, 27 Марта 2019, 19:03
for(int u = 0; u < Item.Count; u++) { if (Item[u].ID == item.ID) //если в списке ID совпадает с ID получаемого предмета { Item[u].Size += item.Size; //добавляем в итеме из списка количество получаемого предмета } else { Item.Add(item); // если нет то просто добавляем объект в список } }
BassPiraT92, а теперь подумай как это будет работать если в списке скажем 3 предмета — у первых двух ID другой, а у последнего совпадает с добавляемым что сделает твой код в этом случае?
не открывай спойлер, сначала подумай
0: id не совпадает, предмет добавляется в конец списка 1: id не совпадает, предмет добавляется в конец списка 2: id совпадает, увеличивается количество 3: id совпадает (ты добавил его на итерации 0), здесь тоже увеличивается количество 4: id совпадает (ты добавил его на итерации 1), здесь тоже увеличивается количество
Цитата
Что бы он не прибавлял size, к объектам, которые были добавлены во время текущего прохода по циклу
смотри спойлер выше в твоем случае шагов 3 и 4 не будет, но первые две итерации все равно добавят предмет