Pull to refresh
16K+
4
Георгий Чкареули@Deda_Sher

Разработчик C# / .NET

16
Rating
1
Subscribers
Send message

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

Level of difficultyMedium
Reading time14 min
Reach and readers9.7K

Каждый C#‑разработчик писал numbers.Where(x => x > 10).Select(x => x * 2) — и удивлялся, узнав, что эта строчка ничего не вычисляет. Цепочка спит, пока мы не начнём перебирать результат.

За этим стоит конкретный механизм — отложенные вычисления, а в его основе лежит обычная фича языка: yield. Разбираем, как устроены ленивые методы LINQ изнутри — от ручной реализации Where без yield до того, во что этот yield разворачивается компилятором.

А вы точно знаете, что происходит под капотом каждый раз, когда пишете .Where(...).Select(...)?

К статье приложен репозиторий с полной реализацией.

Читать далее

Information

Rating
532-nd
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик
Стажёр
From 100,000 ₽
C#
.NET
ASP.NET
Entity framework
PostgreSQL
Docker
Git
Микросервисная архитектура
Clean Architecture
Apache Kafka