В последнее время я писал много кода, который выглядит примерно так:
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 не сохраняет порядок объектов при удалении. Я недостаточно хорошо знаю спецификацию C #, чтобы знать наверняка. Может ли кто-нибудь убедиться, что я прошу или не прошу проблемы с этим шаблоном?
РЕДАКТИРОВАТЬ: Возможно, мне следует уточнить, что приведенное выше очень упрощенный пример, и многое другое происходит, если элемент нужно удалить, поэтому я не думаю, что List
ужасно применим здесь. Хотя это хорошая функция. Я добавил комментарий в блоке if ()
выше, чтобы особо упомянуть об этом.