共用方式為


C# 13 的新功能

C# 13 包含下列新功能。 您可以使用最新的 Visual Studio 2022 版本或 .NET 9 Preview SDK 來試用這些功能。

.NET 9 支援 C# 13。 如需詳細資訊,請參閱 C# 語言版本控制

您可以從 .NET 下載頁面下載最新的 .NET 9 預覽版 SDK。 您也可以下載 Visual Studio 2022 - 預覽版,其中包含 .NET 9 Preview SDK。

新功能會在公開預覽版本中提供時,新增至 [C# 的新功能] 頁面。 Roslyn 功能狀態頁面的工作集區段會在即將推出的功能合併到主要分支時追蹤。

注意

歡迎您提供這些功能的相關意見反應。 如果您發現上述這些新功能的任何功能,請在 dotnet/roslyn 存放庫中建立新問題

新的逸出序列

您可以使用 \e 做為字元 Unicode U+001B字元的ESCAPE字元常值逸出序列。 先前,您已使用 \u001b\x1b。 不建議使用 , \x1b 因為如果後面的 1b 下一個字元是有效的十六進位數位,這些字元會成為逸出序列的一部分。

方法群組自然類型

這項功能可對涉及方法群組的多載解析進行小型優化。 先前的行為是讓編譯程式建構方法群組的完整候選方法集合。 如果需要自然類型,則自然類型是從完整的候選方法集合決定。

新的行為是在每個範圍剪除一組候選方法,移除不適用的候選方法。 一般而言,這些是具有錯誤 arity 的泛型方法,或不符合的條件約束。 只有在找不到候選方法時,此程式才會繼續下一個外部範圍。 此程式更緊密地遵循多載解析的一般演算法。 如果在指定範圍中找到的所有候選方法都不符合,則方法群組沒有自然類型。

您可以閱讀提案規格變更的詳細資料。

隱含索引存取

物件初始化表示式現在允許隱含的「from the 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 之前的版本中, ^ 運算子不能用於物件初始化表達式。 您需要從前面編制元素的索引。

另請參閱