Зрелые языки программирования редко получают конструкцию, которой сообщество ждало годами. Microsoft представила предварительную версию C# 15 с объединениями типов, закрытыми иерархиями и новыми правилами работы с небезопасным кодом. Выпуск языка вместе с .NET 11 намечен на ноябрь 2026 года.
Объединения типов (union types) позволяют явно указать несколько допустимых вариантов значения. Новое ключевое слово union, к примеру, объединит типы Cat, Dog и Bird в общий тип Pet. Перечень остаётся закрытым, поэтому компилятор не пропустит значение другого типа и заранее проверит, что программа обработала каждый разрешённый вариант.
Конструкция пригодится функциям, которые возвращают разные результаты, например успешный ответ с числом или сообщение об ошибке. Раньше для подобных случаев применяли object, общие интерфейсы, дополнительные классы-обёртки или сторонние библиотеки. Union задаёт единый контракт и позволяет разбирать результат через switch без ветви для неизвестных значений.
C# 15 также получит закрытые иерархии. Модификатор closed ограничит прямое наследование классами из той же сборки и помешает стороннему коду добавлять неожиданные подтипы. Если разработчик расширит разрешённый набор, компилятор укажет участки программы, где новый вариант не обработан, вместо сбоя во время работы приложения.
Microsoft одновременно пересматривает модель unsafe. Ключевое слово будет обозначать не только операции с указателями, но и обязательства вызывающего кода по сохранению безопасности памяти. Компилятор сможет отслеживать такие требования между методами. Новая модель пока остаётся экспериментальной, поэтому её синтаксис и поведение могут измениться в следующих версиях.
Среди других новшеств появились аргументы для выражений коллекций, индексаторы в блоках расширения и метки для break и continue, упрощающие выход из вложенных циклов. Все заявленные возможности уже доступны для проверки в .NET 11 Preview 7. Официальный запуск .NET 11 пройдёт во время конференции .NET Conf с 10 по 12 ноября.