Delete all items from a list

Never, ever, modify a collection that is being iterated on with foreach. Inserting, deleting, and reordering are no-nos. You may, however, modify the foreach variable (session in this case).

In this case, use

m_sessions.Clear();

and eliminate the loop.


You aren't allowed to modify a List<T> whilst iterating over it with foreach. Use m_sessions.Clear() instead.

Whilst you could write m_sessions = new List<Session>() this is not a good idea. For a start it is wasteful to create a new list just to clear out an existing one. What's more, if you have other references to the list then they will continue to refer to the old list. Although, as @dasblinkenlight points out, m_sessions is probably a private member and it's unlikely you have other references to the list. No matter, Clear() is the canonical way to clear a List<T>.

Tags:

C#

List