← Все новости
Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам

Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам

Каждый C#‑разработчик писал numbers.Where(x => x > 10).Select(x => x * 2) — и удивлялся, узнав, что эта строчка ничего не вычисляет. Цепочка спит, пока мы не начнём перебирать результат.За этим стоит конкретный механизм — отложенные вычисления, а в его основе лежит обычная фича языка: yield. Разбираем, как устроены ленивые методы LINQ изнутри — от ручной реализации Where без yield до того, во что этот yield разворачивается компилятором.А вы точно знаете, что происходит под капотом каждый раз, когда пишете .Where(...).Select(...)?К статье приложен репозиторий с полной реализацией. Читать далее