В этом ответе qaru.site/info/8243/... Эрик Липперт говорит, что "FYI мы, скорее всего, исправим это в следующей версии С#, это главная больная точка для разработчики" в отношении того, как петли foreach используют переменную.
В следующей версии каждый раз, когда вы запускаете цикл "foreach", мы генерируем новую переменную цикла, а не каждый раз закрываем одну и ту же переменную. Это "нарушение", но в подавляющем большинстве случаев "перерыв" будет исправлять, а не вызывать ошибки.
Я не смог найти ничего, что указывало бы, что это изменение уже сделано. Есть ли какие-либо признаки того, что так будет работать цикл foreach в С# 5?