это действительно зависит от реализации.Большинство реализаций не полюбят вас, если вы измените коллекцию во время перечисления, - и будут генерировать исключение преднамеренно.Тем не менее, можно (в основном для коллекций, добавляемых только для добавления, но возможно для всех) написать безопасный перечислитель (например, путем перечисления настолько, насколько он существовал на момент его создания, но возможно несколько конструкций).
Лично я бы избежал сценария;лучше спроектировать его так, чтобы вы перечислили либо , либо , но не оба одновременно.
Если вы не можете использовать коллекцию, которая поддерживает одновременное перечисление ивидоизменять, тогда можно сделать копию, но опять же - не мой предпочтительный вариант.