У меня есть список объектов, которые я хочу удалить каждый элемент в свою очередь, который изменяет длину списка по мере его поступления, Работа. Это трудно объяснить, так что я буду просто показать код:Каков наилучший способ перебора списка, если вы уничтожаете его содержимое по мере того, как вы идете
public List<GameObject> ActiveChunks = new List<GameObject>();
public static void DeActivate(GameObject Obj)
{
//Do lots of other stuff based on the Obj
....
....
instance.ActiveChunks.Remove(Obj);
}
public static void DeActivateAllChunks()
{
for (int c = 0; c < instance.ActiveChunks.Count; c++)
{
DeActivate(instance.ActiveChunks[c], false);
}
}
Как вы можете видеть, что цикл проходит через мой список активного кусковых вызывающий функцию деактивировать, которая делает некоторые вещи на объекте, а затем удаляет элемента из списка. Мой вопрос в том, есть ли лучший способ перебора через список, который изменяется?
Вам нужно сделать копию списка и удалить элементы из копии –
итерации от графа до 0 с '--'? – Marnix
Я думаю, что вы получите ошибки, удаляющиеся из списка, когда вы перебираете его вперед. Вам нужно вернуться назад 'for (var c = instance.ActiveChunks.Count - 1; c> = 0; c -)' –