Как известно, если во время работы foreach коллекция, которую он перебирает будет изменена (в другом потоке, например), то произойдёт исключение. Но как устроен этот механизм исключений? Кто ответственен за обнаружение изменения? Должен ли я при разработке своих коллекций принимать какие-то меры для поддержки этого поведения или всё всегда будет заводиться из коробки?
Ответ
Цикл foreach эквивалентен приблизительно следующему коду:
int[] a = { 1, 2, 3, 4 };
var enumerator = ((IEnumerable
Таким образом, все зависит от реализации метода IEnumerable
За исключением одного бага, о котором я уже писал в майкрософт, но толку это не поимело. Метод List
Комментариев нет:
Отправить комментарий