Как уже отмечалось, вы не можете foreach
более IEnumerator<T>
. Из-за этого затрудняется интеграция в те места кода, где вы хотите перебрать то, что возвращаете.
Кроме того, здесь важно, что IEnumerable<T>
предназначен для фабрики, так что вы можете создавать реализации IEnumerator<T>
, которые не связаны напрямую с реализацией коллекции T
.
Еще более важным сейчас является тот факт, что все методы расширения для LINQ работают IEnumerable<T>
, поэтому вы захотите упростить работу со своими перечислениями, возвращая это.