Не знаю, но сделаю обоснованное предположение: поскольку перечислитель обычно не реализует IDisposable, он должен быть просто сборщиком мусора, потому что в противном случае каждый использование этого перечислителя приведет к утечке неуправляемых ресурсов. Конечно, технически вы можете реализовать перечислитель, который имеет побочные эффекты сам по себе ...
Другими словами, я никогда не чувствовал себя плохо, возвращаясь из блока foreach
. Я ожидал бы, что язык будет обрабатывать вещи, точно так же как с оператором using
, где язык гарантирует, что объект удаляется (неявным образом вызывая Dispose в блоке finally
).