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

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

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

2026-08-24
3 мин. чтения
16 просмотров
فريق تحرير certi.news
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. Источник в этом материале не указывает окончательную дату перевода возможностей в стабильный выпуск.

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

فريق تحرير certi.news

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

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

Все новости