В последнее время я написал много кода, который выглядит так:
List<MyObject> myList = new List<MyObject>();
...
for(int i = 0; i < myList.Count; ++i)
{
if(/*myList[i] meets removal criteria*/)
{
myList.RemoveAt(i);
--i; //Check this index again for the next item
//Do other stuff as well
}
}
и я просто стал немного параноидальным, что, возможно, List не сохраняет порядок объектов при удалении. Я не знаю спецификации С# достаточно хорошо, чтобы точно знать. Может ли кто-нибудь подтвердить, что я либо или не прошу о неприятностях с этим шаблоном?
EDIT: Возможно, мне следует пояснить, что приведенное выше является очень упрощенным примером, и многое другое происходит, если элемент нужно удалить, поэтому я не думаю, что List<T>.RemoveAll()
здесь ужасно применимо. Хотя это хорошая функция. Я добавил комментарий в блок if()
выше, чтобы конкретно упомянуть об этом.