TGViewer
Уютное сообщество C# разработчиков Уютное сообщество C# разработчиков @cscharp · 2.26K subscribers
Post #30 2.22K
"Стоит ли использовать foreach, если for быстрее?"

Здесь важно понимать, чем отличаются эти циклы.

▪️for - это классический управляющий оператор, который транслируется в +/- одинаковый IR или машинный код практически во всех языках программирования согласно блок-схеме выше.

Принцип его работы одинаков везде:
for (выражение1; выражение2; выражение3)
оператор

▪️foreach
- это синтаксический сахар над итераторами, который ещё и работает согласно принципам утиной типизации.
Перебираемому объекту даже не обязательно реализовывать IEnumerable.

Разворачивается такой цикл примерно в следующее:
var enumerator = enumerable.GetEnumerator();
while (enumerator.MoveNext())
{
var item = enumerator.Current;
// ...
}

Невооружённым глазом видно, что здесь происходит вызов через VMT, возможен cast, выделение памяти и так далее.
Обслуживание foreach очевидно дороже, потому что это абстракция.

Так что использование везде for вместо foreach - скорее микрооптимизация.

#полезное #tips
  • 👍 8
  • 🔥 4
  • ❤ 2
More from @cscharp
  1. Sep 21, 2026☄️ Вакансии по C# за неделю: 6️⃣ Senior .NET Developer REMOTE GLOBAL Senior · Remote 2️⃣ J…
  2. Sep 14, 2026C# Programming Автор: Patrick Felicia Год издания: 2024 #csharp #unity #en Скачать книгу
  3. Sep 14, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 15 сентября(уже завтра!) в 1…
  4. Sep 14, 2026🔥 Вакансии по C# за неделю: 📥 Senior Fullstack Developer REDHR.RU Senior · Remote · ₽ 23…
  5. Sep 7, 2026🔔 Вакансии по C# за неделю: ⭐️ Full Stack Developer Life Data Lab Senior · Remote · $3 50…
  6. Sep 3, 2026C#. Алгоритмы и структуры данных Автор: Н. А. Тюкачев Год издания: 2021 #csharp #ds #ru Ск…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →