На этом уроке мы узнаем, как упростить создание итератора. Для этого достаточно просто написать нужный нам цикл, внутри которого воспользоватся волшебным словом yield.
Дата отправки отчёта:
15 мая 2017 г.
Задание выполнено: за
25 мин.
Чему научился:
Использовать ключевое слово yield для быстрой реализации итератора
Что было сложным:
Понять, хотя бы приблизительно, как цикл с yield return преобразуется в нашу state machine.
Комментарии:
Сфоpyлировaть своими слoвaми, что тaкoе yield. yield - ключевое слово, позволяющее быстро реализовать итератор, используя для реализации state machine синтаксис, подобный синтаксису "обычного" цикла.
В уроке, кажется, не было отмечено, что при каждой последующей итерации управлении передается после(!) инструкции yield return. Заметил это, написав дополнительную инструкцию после yield return (отобразил на скриншоте). Это, конечно, нисколько не умаляет полезности урока, спасибо большое!
На практике это очевидно и без добавления вывода доп. информации в консоль, видимо это приходит с опытом, а по началу, чтобы убедиться в этом, конечно способ отличный придумал, позже привыкнешь дебажить и будешь видеть намного больше для лучшего понимания алгоритмов.
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: Использованию yield. Yield позволяет избавится от реализации дополнительного класса , при использовании цикла foreach. И в определенных ситуациях оптимизировать вычисления при большом переборе значений.
Научился: На этом уроке мы наконец-то воспользовались помощью волшебного слова yield. Я еще не до конца прочувствовал эту тему. В голове возникал вопрос: "Для чего городить огород, если есть цикл foreach, который до этого всегда выручал и без использования этих интерфейсов!" Оказалось, что foreach также использует итератор, но неявно. На данный момент я понимаю так: Класс , являющийся коллекцией объектов, использует yield для реализации последовательного обращения ко всем своим элементам с начала до конца. При выполнении программы, yield создаёт класс, который содержит ряд методов по созданию счётчика перечисления, отслеживанию его переполнения, сброса при повторном обращении и тому подобное...