Я думаю, что главная причина, по которой он не работает, заключается в том, что проектировать его так, чтобы он не был слишком сложным, но в то же время производительным, было бы сложно и с относительно небольшой выгодой.
Что именно сделает ваш код? Будет ли он напрямую возвращать массив или итерировать по нему?
Если бы он непосредственно возвращал массив, вам пришлось бы придумывать сложные правила, при каких условиях return
допускается, потому что return
после yield return
не имеет смысла. И вам, вероятно, потребуется сгенерировать сложный код, чтобы решить, будет ли метод возвращать пользовательский итератор или массив.
Если вы хотите выполнить итерацию коллекции, вам, вероятно, понадобится более подходящее ключевое слово. Что-то вроде yield foreach
. Это на самом деле рассматривалось, но в конечном итоге не было выполнено. Я думаю, что помню, что читая основную причину, это то, что на самом деле очень трудно заставить его работать хорошо, если у вас есть несколько вложенных итераторов.