I have a construction similar to this (but a lot more complicated):
var list = new List();
// .. populate list ..
foreach(var item i
Yes, you could break, if that's what you really want. An exception won't be thrown until the for
loop tries to grab the next item from the list.
But I've found it's easiest just to create and iterate across a copy of the list so you don't have to worry about it.
foreach(var item in list.ToList())
The added performance overhead of an extra, untouched list is generally negligible compared to the maintainability costs of more complex code.