Как эффективно удалить из списка <T> (C #)?

Если я правильно понял (и, пожалуйста, поправьте меня, если ям неправильно), список реализован массивом в .NET, что означает, что каждое удаление элемента в списке приведет к перераспределению всего списка (что, в свою очередь, означает, чтоO(n)).Я'

Я занимаюсь разработкой игры, в игре у меня много пуль, летающих в воздухе в любой момент, пустьскажем, 100 пуль, каждый кадр я перемещаю их на несколько пикселей и проверяю на предмет столкновения с объектами в игре, мне нужно удалить из списка каждую попавшуюся пулю.

Поэтому я собираю столкнувшуюся пулю в другой временный список и затем делаю следующее:

foreach (Bullet bullet in bulletsForDeletion)
    mBullets.Remove(bullet);

Потому что циклO(n) и удалениеO(n), Я потратилO(n^2Время убрать.

Есть ли лучший способ удалить его или использовать более подходящую коллекцию?

Ответы на вопрос(6)

Ваш ответ на вопрос