| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > этот странный yield |
| Автор: jonie 23.12.2007, 21:11 | ||
| Так во чтоже компилятор (или предкомпилятор?) превращает yield ? т.е. как происходит сохранение текущего состояния...? например
где про это почитать? |
| Автор: izekia 23.12.2007, 23:34 |
| какое состояние? возврат происходит только после завершения метода кстати, по теме, если null не стоит возвращать я об этом в своем блоге писа |
| Автор: jonie 24.12.2007, 00:07 |
| состояние - например для данного примера - что возвращать на след. итерации... |
| Автор: izekia 24.12.2007, 00:26 |
| jonie, я не понимаю о чем речь фактический возврат из метода происходит в момент его завершения, возвращается объект типа IEnumerable про какое состояние говорим? |
| Автор: mr.DUDA 25.12.2007, 01:54 |
Говорим про контекст энумератора yield return возвращает очередное значение при перечислении, причём после его использования в foreach управление возвращается в ту точку, в которой был yield return, перечисление продолжается. Читайте http://msdn.microsoft.com/msdnmag/issues/06/00/c20/default.aspx?loc=ru. В контекст входят все локальные переменные и параметры метода. Компилятор автоматически создаёт класс, куда копирует всё перечисленное перед передачей управления в yield return. Если интересно, можно расковырять скомпилированный .exe/.dll рефлектором, на самом деле под "простым yield" кроется много непотребной шелухи. |
| Автор: jonie 25.12.2007, 01:56 |
| mr.DUDA меня вполне понял. +1 что и хотел подтвердить для себя (смотрел я ессно сборки)) тема закрыта. |
| Автор: izekia 25.12.2007, 08:59 |
| mr.DUDA, да, точно проверил на примере спасибо за ссылку был неправ по ссылке правда немного не то) |
| Автор: mr.DUDA 25.12.2007, 13:40 |
Да нет, именно то Итераторы называется. |
| Автор: izekia 25.12.2007, 14:03 |
| mr.DUDA, я про то что там в общем обо всем |
| Автор: jonie 25.12.2007, 14:09 |
| ну, мужики, извиняйте - в терминологии .net я плаваю) потому и писал в это раздел) |
| Автор: mr.DUDA 25.12.2007, 14:34 |
| jonie, всё нормально |