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