Программирование и разработка программного обеспечения

C# 15 добавляет расширенные индексы и улучшения для коллекционных выражений в предварительной версии

Microsoft рассмотрела в блоге .NET ряд возможностей, доступных в первой предварительной версии C# 15, которая выйдет вместе с .NET 11. Среди них — передача аргументов конструкторам коллекций, расширенные индексы и метки циклов. Эти изменения призваны сократить вспомогательный код и повысить ясность некоторых повседневных шаблонов программирования.

2026-08-24
3 мин. чтения
191 просмотров
certi.news Editorial Team
C# 15 добавляет расширенные индексы и улучшения для коллекционных выражений в предварительной версии

Microsoft представила новые возможности, доступные в предварительной версии C# 15 — версии, которая выйдет вместе с .NET 11. Обновление включает объединённые типы, замкнутые иерархии и предварительную версию обновлённой модели работы с небезопасным кодом, а также небольшие изменения, направленные на сокращение повторяющегося процедурного кода в повседневном использовании.

Аргументы внутри коллекционных выражений

Коллекционные выражения в C# могут преобразовывать значения в различные типы коллекций, но ранее не позволяли передавать аргументы базовому конструктору или функции создания. C# 15 добавляет новый элемент в форме with(...), который помещается в начале выражения и позволяет передавать эти аргументы.

Например, это позволяет создать список с непосредственным указанием ёмкости внутри выражения или создать HashSet, передав StringComparer.OrdinalIgnoreCase, вместо разделения создания коллекции и добавления элементов. Microsoft отмечает, что эта возможность прокладывает путь к ожидаемому синтаксису выражений словарей, которому, вероятно, потребуется указывать средство сравнения, используемое для ключей.

Доступ к элементам через расширенные индексы

После того как C# 14 добавил расширенные члены для свойств и операторов наряду с методами, C# 15 расширяет эту модель, включив в неё расширенные индексы. Благодаря этому доступ к элементу объекта-приёмника становится возможен так, словно индекс изначально определён в его типе.

В примере Microsoft доступ к элементу IEnumerable<int> требовал вспомогательного метода, например ElementAtIndex. Новый синтаксис позволяет использовать numbers[2] через расширенный индекс, связанный с объектом-приёмником. В блоге поясняется, что индексы не могут быть статическими, поэтому содержащий расширение тип должен включать именованный объект-приёмник.

Метки для циклов break и continue

C# 15 позволяет помечать циклы, а затем напрямую направлять к ним break или continue. Это полезно во вложенных циклах, где для выхода из внешнего цикла обычно требовалась логическая переменная, использование goto или перенос логики в отдельную функцию.

На практике метка делает цель выхода очевидной внутри кода и устраняет необходимость в переменной для отслеживания того, найден ли нужный элемент. В примере показан цикл с меткой scan, из которого можно напрямую выйти с помощью break scan.

Что меняется для разработчиков?

Эти возможности не столько изменяют модель выполнения .NET, сколько реорганизуют синтаксис кода и сокращают некоторые повторяющиеся шаблоны. Их ценность особенно заметна в проектах, использующих коллекционные выражения, работающих с вложенными циклами или нуждающихся в более кратких интерфейсах доступа к расширяемым типам.

Однако возможности всё ещё находятся на стадии предварительной версии и поэтому пока не являются стабильным окончательным интерфейсом. Microsoft предлагает разработчикам скачать .NET 11 и попробовать C# 15 в своих приложениях, обратившись к полному справочнику по нововведениям и участвуя в текущих обсуждениях в рамках проекта csharplang. Источник в этом материале не указывает окончательную дату перевода возможностей в стабильный выпуск.

Источник новости
c
Автор

certi.news Editorial Team

Что важно знать

Microsoft представляет новые экспериментальные возможности в C# 15, которые должны появиться вместе с .NET 11. Среди них — аргументы внутри выражений коллекций, расширяемые индексы и метки циклов. Эти возможности ещё не являются окончательными, а источник не указывает срок их стабильного выпуска.

  • В C# 15 добавляется синтаксис with(...) для передачи аргументов конструкторам коллекций внутри выражений коллекций.
  • Расширяемые индексы позволяют обращаться к элементам некоторых объектов с использованием синтаксиса, похожего на встроенную индексацию, например numbers[2].
  • Метки циклов позволяют напрямую направлять break или continue к определённому циклу, что полезно во вложенных циклах.
  • В предварительную версию также входят объединённые типы, закрытые иерархии и предварительная версия обновлённой модели работы с небезопасным кодом.
  • Microsoft предлагает разработчикам опробовать эти возможности через .NET 11 и участвовать в обсуждениях проекта csharplang.

Частые вопросы

Когда станут доступны возможности C# 15?

Они появятся вместе с .NET 11, но сейчас доступны в предварительной версии, и источник не указывает окончательную дату стабильного выпуска.

В чём преимущество аргументов with(...) в выражениях коллекций?

Они позволяют передавать аргументы конструктору коллекции или функции создания непосредственно внутри выражения, например задавать ёмкость списка или передавать StringComparer в HashSet.

Что позволяют делать расширяемые индексы?

Они позволяют обращаться к элементу объекта-приёмника так, как будто индекс определён в его типе, при условии наличия именованного приёмника в контейнере расширения.

Как помогают метки циклов?

Они позволяют напрямую направлять break или continue к именованному циклу, уменьшая необходимость в логических переменных или goto во вложенных циклах.

Изучить сюжет

Связанные темы и сущности

В той же категории

Вам также может понравиться

Все новости