次の方法で共有


C# 15 の新機能

C# 15 には、次の新機能が含まれています。 最新の Visual Studio 2026 Insiders バージョンまたは .NET 11 プレビュー SDK を使用して、これらの機能を試してください。

C# 15 は、最新の C# プレビュー リリースです。 .NET 11 プレビュー バージョンでは、C# 15 がサポートされています。 詳細については、C# 言語のバージョン管理 を参照してください。

最新の .NET 11 プレビュー SDK は 、.NET ダウンロード ページからダウンロードできます。 .NET 11 プレビュー SDK を含む Visual Studio 2026 Insider をダウンロードすることもできます。

[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 では、複数のケース型の 1 つである値を表す 共用体型が導入 されています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 Preview 2 に最初に登場しました。 初期の .NET 11 プレビューでは、 UnionAttribute インターフェイスと IUnion インターフェイスはランタイムに含まれていないため、プロジェクトで宣言する必要があります。 以降の .NET 11 プレビュー バージョンには、これらのランタイムの種類が含まれています。 また、共用体メンバー プロバイダーなど、提案仕様の一部の機能はまだ実装されていません。 これらの機能は、将来のプレビューで提供される予定です。

詳細については、言語リファレンスまたは機能仕様共用体の型を参照してください。