Сохраняет ли удаление элементов из C # List заказы других элементов?

В последнее время я писал много кода, который выглядит примерно так:

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 .RemoveAll () ужасно применим здесь. Хотя это хорошая функция. Я добавил комментарий в блоке if () выше, чтобы особо упомянуть об этом.

11
задан chaosTechnician 5 August 2011 в 19:42
поделиться