@daniel, вы правы в том, что на самом деле перечислитель выдает ошибку, но в ответ на вопрос об OP, я надеялся показать, что есть фундаментальное различие в использовании foreach для цикла for, который будет вызывать ошибки в зависимости от того, как вы используете это.
лятор компилируетforeach
петля в нечто вродеfor
цикл, когдаforeach
используется с массивом. И компилятор компилируетforeach
петля в нечто вродеwhile
цикл, когдаforeach
используется сIEnumerable
или жеIEnumerable<T>
, Так значит ли этоforeach
это чистоsyntactic sugar
? Или в этом есть что-то сложное?
Знает ли CLR оforeach
? Есть ли что-то специально предназначенное дляforeach
в коде MSIL?