Possible to modify a List while iterating through it?

It's possible, the trick is to iterate backwards:

for (int i = depthCards.Count - 1; i >= 0; i--) {
  if (depthCards[i] == something) { // condition to remove element, if applicable
     depthCards.RemoveAt(i);
  }
}

You can iterate backwards with a for-loop

for (int i = depthCards.Count - 1; i >= 0; i--)
{
    depthCards.RemoveAt(i);
}

or if you just want to remove items on a condition, use List.RemoveAll:

depthCardToUpdate.RemoveAll(dc => conditionHere);

You can create a custom enumerator that handles this for you. I did this once and it was a bit tricky but worked after some finesse.

See: http://www.codeproject.com/Articles/28963/Custom-Enumerators

Tags:

C#

.Net