共用方式為


C# 15 有什麼新內容

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 預覽版中, UnionAttributeIUnion 介面並未包含在執行時,因此你必須在專案中宣告它們。 後續的 .NET 11 預覽版本包含這些執行時類型。 此外, 提案規範 中的一些功能尚未實作,包括 工會成員提供者。 這些功能會在未來的預覽中陸續推出。

欲了解更多資訊,請參閱語言參考中的 聯合型別功能規範