C# 15 包含以下新功能。 請使用最新的 Visual Studio 2026 內部版本或 .NET 11 預覽版 SDK 試用這些功能:
C# 15 是最新的 C# 預覽版本。 .NET 11 預覽版支援 C# 15。 如需詳細資訊,請參閱 C# 語言版本設定。
你可以從 .NET 下載頁面下載最新的 .NET 11 預覽版 SDK。 你也可以下載 Visual Studio 2026 Insider 版,其中包含 .NET 11 預覽版 SDK。
當新功能在公開預覽版本中可用時,「C# 的新內容」頁面會新增這些功能。 工作集區段在Roslyn 功能狀態頁面上,追蹤即將推出的功能何時合併到主要分支。
你可以在我們的 「破壞性變更」文章中找到 C# 15 中引入的任何破壞性變更。
備註
我們對這些功能的意見反應有興趣。 如果您發現上述任何新功能的問題,請在 dotnet/roslyn 存放庫中建立新的問題。
集合表達式參數
你可以將參數傳給底層集合的建構子或工廠方法,方法是將 with(...) 元素作為集合表達式的第一個元素。 此功能允許您直接在集合表達式語法中指定容量、比較器或其他建構參數。
以下範例說明如何將容量參數傳遞給List<T>建構子,並將比較器傳遞給HashSet<T>。
string[] values = ["one", "two", "three"];
// Pass capacity argument to List<T> constructor
List<string> names = [with(capacity: values.Length * 2), .. values];
// Pass comparer argument to HashSet<T> constructor
HashSet<string> set = [with(StringComparer.OrdinalIgnoreCase), "Hello", "HELLO", "hello"];
// set contains only one element because all strings are equal with OrdinalIgnoreCase
欲了解更多關於集合表達式參數的資訊,請參閱 集合表達式的語言參考文章 或 功能規範。 關於在集合初始化器中使用集合表達式參數的資訊,請參見 物件與集合初始化器。
聯合型別
C# 15 引入了 聯合型別,代表一種可以是多種 case 型別之一的值。 請用關鍵字 union 宣告聯合:
public record class Cat(string Name);
public record class Dog(string Name);
public record class Bird(string Name);
public union Pet(Cat, Dog, Bird);
聯合元提供每種案例類型的隱式轉換,編譯器確保 switch 所有案例類型的表達式皆具完整:
Pet pet = new Dog("Rex");
string name = pet switch
{
Dog d => d.Name,
Cat c => c.Name,
Bird b => b.Name,
};
聯合型態首次出現於 .NET 11 預覽版 2。 在早期的 .NET 11 預覽版中, UnionAttribute 和 IUnion 介面並未包含在執行時,因此你必須在專案中宣告它們。 後續的 .NET 11 預覽版本包含這些執行時類型。 此外, 提案規範 中的一些功能尚未實作,包括 工會成員提供者。 這些功能會在未來的預覽中陸續推出。