Причиной различного вывода является способ заполнения списка Troop
объектов:
for(int i=0;i<5;i++){
army1.Add(monkey);
army1.Add(flyingMonkey);
army1.Add(wizard);
army1.Add(balloon);
}
Вы делаете это в цикле с пятью итерациями.Таким образом, каждый из ваших Troop
экземпляров будет добавлен в ваш список пять раз (оставив вам список army1
с 20 элементами).Соответственно, каждый из ваших Troop
элементов должен быть удален пять раз , пока их больше нет в списке.
Просто удалите цикл и полученное количество строкиз кода 2 будет совпадать с кодом 1:
army1.Add(monkey);
army1.Add(flyingMonkey);
army1.Add(wizard);
army1.Add(balloon);
При этом добавление единиц в цикле не обязательно является неправильным.Когда я читал твой код, моей первой мыслью было, что ты пытаешься создать армию, содержащую несколько юнитов одного типа (четыре обезьяны, четыре летающие обезьяны, четыре волшебника и четыре воздушных шара).
Вы можете сделатьэто, но имейте в виду, что, как вы делаете это, ваша армия не будет содержать четырех разных обезьян, но четыре раза одну и ту же обезьяну, потому что вы добавляете один и тот же экземпляр объекта четыре раза.Когда вы уменьшите здоровье одного из них, вы увидите, что это изменение отражено в трех других предметах того же типа.
Чтобы создать армию из нескольких юнитов одного типа, вам нужно будет Создайте единиц в каждой итерации вместо этого, поместив соответствующий код инициализации в цикл, а также:
for(int i=0;i<5;i++){
Troop monkey = new Troop();
Troop flyingMonkey = new Troop();
Troop wizard = new Troop();
Troop balloon = new Troop();
monkey.name = "Monkey " + i;
flyingMonkey.name = "Flying Monkey " + i;
wizard.name = "Wizard " + i;
balloon.name = "Balloon " + i;
monkey.health = 50;
flyingMonkey.health = 50;
wizard.health = 60;
balloon.health = 55;
army1.Add(monkey);
army1.Add(flyingMonkey);
army1.Add(wizard);
army1.Add(balloon);
}
РЕДАКТИРОВАТЬ: Кстати, на текущем этапе вашего кода и ваших классовВы можете легко написать это без каких-либо переменных для создания отдельных войск:
for (int i=0; i<5; i++){
army1.Add(new Troop
{
name = "Monkey " + i,
health = 50
});
army1.Add(new Troop
{
name = "Flying Monkey " + i,
health = 50
});
army1.Add(new Troop
{
name = "Wizard " + i,
health = 60
});
army1.Add(new Troop
{
name = "Balloon " + i,
health = 55
});
}