TGViewer
Библиотека шарписта | C#, F#, .NET, ASP.NET Библиотека шарписта | C#, F#, .NET, ASP.NET @csharpproglib · 21.6K subscribers
Post #6452 3.8K
⚡️ Когда важна производительность

В C# цикл foreach часто воспринимается как самая удобная и красивая форма для обхода коллекций. Но в вопросах производительности foreach не всегда оптимален.

Почему лучше избегать foreach:

• foreach использует итератор — для массивов его оптимизируют, но для списков, словарей и других коллекций создаётся объект или struct-итератор.

• под капотом foreach может создавать временные объекты, что увеличивает нагрузку на сборщик мусора и снижает производительность.

• foreach всегда выполняет проверки и гарантирует корректность обхода, но это стоит некоторой производительности.

Что использовать вместо foreach:

Цикл for с индексом, особенно для массивов:
for (int i = 0; i < data.Length; i++)
{
// работа с data[i]
}


Span<T> и его методы — для обхода данных без выделения памяти и избыточных проверок:
var span = data.AsSpan();
for (int i = 0; i < span.Length; i++)
{
// работа с span[i]
}


Когда можно использовать foreach:

• Если цикл выполняется нечасто или количество элементов небольшое.

• Для обхода коллекций, где критичен чистый и понятный стиль программирования.

🐸Библиотека шарписта

#sharp_view
  • 🤔 15
  • ❤ 6
  • 🥱 1
More from @csharpproglib
  1. Sep 30, 2026📝 Логирование со строковой интерполяцией Логирование c интерполяцией строк один из самых…
  2. Sep 28, 2026👨‍💻 Не показывайте технические ошибки пользователям Когда приложение падает с необработа…
  3. Sep 26, 2026📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #garbage_collector
  4. Sep 25, 2026🔐 NuGet: Microsoft меняет сертификат подписи С 23 сентября Microsoft использует новый сер…
  5. Sep 24, 2026🤩 Как поймать зависший .NET-сервис Приложение начинает тормозить, запросы зависают, а в л…
  6. Sep 23, 2026⚙️ yield return не бесплатный Итераторы выглядят просто, но работают иначе: IEnumerable<in…
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 →