Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> этот странный yield, как он работает ? 
V
    Опции темы
jonie
Дата 23.12.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Так во чтоже компилятор (или предкомпилятор?) превращает yield ?
т.е. как происходит сохранение текущего состояния...?
например
Код

        public class myList: IEnumerable
        {
            public IEnumerator GetEnumerator()
            {
                yield return "1st";
                yield return "2th";
                yield return "3th";
            }
        }
где-то же должно сохраняться состояние...?
где про это почитать?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
izekia
Дата 23.12.2007, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: 1
Всего: 3



какое состояние? 
возврат происходит только после завершения метода

кстати, по теме, если null не стоит возвращать
я об этом в своем блоге писа
PM MAIL   Вверх
jonie
Дата 24.12.2007, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



состояние - например для данного примера - что возвращать на след. итерации...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
izekia
Дата 24.12.2007, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: 1
Всего: 3



jonie, я не понимаю о чем речь
фактический возврат из метода происходит в момент его завершения, возвращается объект типа IEnumerable
про какое состояние говорим?
PM MAIL   Вверх
mr.DUDA
Дата 25.12.2007, 01:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(izekia @  23.12.2007,  23:26 Найти цитируемый пост)
про какое состояние говорим?

Говорим про контекст энумератора  smile
yield return возвращает очередное значение при перечислении, причём после его использования в foreach управление возвращается в ту точку, в которой был yield return, перечисление продолжается. Читайте мсдн.

В контекст входят все локальные переменные и параметры метода. Компилятор автоматически создаёт класс, куда копирует всё перечисленное перед передачей управления в yield return. Если интересно, можно расковырять скомпилированный .exe/.dll рефлектором, на самом деле под "простым yield" кроется много непотребной шелухи.


--------------------
user posted image
PM MAIL WWW   Вверх
jonie
Дата 25.12.2007, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



mr.DUDA меня вполне понял. +1
что и хотел подтвердить для себя (смотрел я ессно сборки))
тема закрыта.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
izekia
Дата 25.12.2007, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: 1
Всего: 3



mr.DUDA, да, точно
проверил на примере
спасибо за ссылку
был неправ

по ссылке правда немного не то)

Это сообщение отредактировал(а) izekia - 25.12.2007, 09:06
PM MAIL   Вверх
mr.DUDA
Дата 25.12.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(izekia @  25.12.2007,  07:59 Найти цитируемый пост)
по ссылке правда немного не то)

Да нет, именно то smile
Итераторы называется.


--------------------
user posted image
PM MAIL WWW   Вверх
izekia
Дата 25.12.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: 1
Всего: 3



mr.DUDA, я про то что там в общем обо всем 
PM MAIL   Вверх
jonie
Дата 25.12.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



ну, мужики, извиняйте - в терминологии .net я плаваю) потому и писал в это раздел)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
mr.DUDA
Дата 25.12.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



jonie, всё нормально  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0857 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.