Новые возможности C# 13

C# 13 включает следующие новые функции. Эти функции можно попробовать с помощью последней версии Visual Studio 2022 или пакета SDK для предварительной версии .NET 9.

C# 13 поддерживается в .NET 9. Дополнительные сведения см. в статье Управление версиями языка C#.

Вы можете скачать последний пакет SDK предварительной версии .NET 9 на странице скачивания .NET. Вы также можете скачать Visual Studio 2022 — предварительная версия, которая включает пакет SDK предварительной версии .NET 9.

Новые функции добавляются на страницу "Новые возможности В C#", когда они доступны в общедоступных предварительных версиях выпусков. Рабочий раздел страницы состояния функции roslyn отслеживает, когда предстоящие функции объединяются в основную ветвь.

Примечание.

Мы заинтересованы в ваших отзывах об этих функциях. Если вы найдете проблемы с любым из этих новых функций, создайте новую проблему в репозитории dotnet/roslyn .

Новая escape-последовательность

Вы можете использовать \e в качестве escape-последовательности символьного литерала для символа ESCAPE Юникода U+001B. Ранее вы использовали \u001b или \x1b. Использование \x1b не рекомендуется, так как если следующие символы были допустимыми шестнадцатеричными цифрами, эти символы 1b стали частью escape-последовательности.

Естественный тип группы методов

Эта функция делает небольшие оптимизации для разрешения перегрузки с участием групп методов. Предыдущее поведение было для компилятора для создания полного набора методов кандидатов для группы методов. Если требуется естественный тип, естественный тип был определен из полного набора методов кандидатов.

Новое поведение заключается в том, чтобы обрезать набор методов кандидатов на каждом область, удалив эти методы кандидатов, которые не применимы. Как правило, это универсальные методы с неправильным arity или ограничениями, которые не удовлетворены. Процесс продолжается до следующей внешней область только в том случае, если не найдены кандидатные методы. Этот процесс более тесно соответствует общему алгоритму разрешения перегрузки. Если все методы кандидатов, найденные в заданном область, не соответствуют, группа методов не имеет естественного типа.

Вы можете ознакомиться с подробными сведениями об изменениях в спецификации предложения.

Неявный доступ к индексу

Неявный оператор ^индекса "from end" теперь допускается в выражении инициализатора объектов. Например, теперь можно инициализировать массив в инициализаторе объектов, как показано в следующем коде:

var v = new S()
{
    buffer =
    {
        [^1] = 0,
        [^2] = 1,
        [^3] = 2,
        [^4] = 3,
        [^5] = 4,
        [^6] = 5,
        [^7] = 6,
        [^8] = 7,
        [^9] = 8,
        [^10] = 9
    }
};

В версиях до C# 13 ^ оператор не может использоваться в инициализаторе объектов. Необходимо индексировать элементы с передней части.

См. также