Start Debugging

C# 14 の機能

C# 14 で実際にリリースされたもの、コード付きで。

このまとめは C# 14 の言語機能について私が書いたすべてを集めたものです: union 型、partial コンストラクターとイベント、extension 型、そして公式のリリースノートでは見落としやすい細かなエルゴノミクスの改善。

まず読むべき記事

C# 12 から移行する場合は、union 型と partial メンバーに関する記事から始めてください。この 2 つが最大の動作変更です。その他はすべて使い勝手の改善です。

このページについて

下のリストは、c# 14csharp 14c#csharpc# language のいずれかのタグが付いた記事を自動的に集めたものです。新しい順に並びます。

インデックス (218 件)

2026 / 07

  • ASP.NET Core 11 の API にレスポンス圧縮を追加する方法

    ASP.NET Core 11 におけるレスポンス圧縮の完全ガイド。AddResponseCompression と UseResponseCompression、Brotli と Gzip に加わった新しい組み込みの Zstandard プロバイダー、圧縮レベル、EnableForHttps と CRIME/BREACH のリスク、カスタム MIME タイプ、middleware の順序、そしてリバースプロキシに任せるべき場合を解説します。

  • ASP.NET Core 11 の minimal API エンドポイントから型付き Results<T1, T2> ユニオンを返す方法

    ハンドラーの戻り値の型を Results<Ok<T>, NotFound> と宣言し、TypedResults.Ok / TypedResults.NotFound を返します。ユニオンはハンドラーが宣言したものだけを返すことをコンパイル時にチェックし、OpenAPI に対して自己記述するため、.Produces を手書きする必要がありません。非同期ハンドラー、6 型の上限、ASP.NET Core 11 でのテストを扱います。

  • ASP.NET Core 11 の Minimal API に出力キャッシュを追加する方法

    ASP.NET Core 11 の Minimal API における出力キャッシュの完全な実践ガイド:AddOutputCache と UseOutputCache、エンドポイントと MapGroup での CacheOutput、名前付きポリシーとベースポリシー、Expire、VaryByQuery と VaryByHeader、EvictByTagAsync によるタグベースの無効化、キャッシュスタンピード対策、ETag による再検証、そして Redis バッキングストア。

  • ASP.NET Core 11 で AddOperationTransformer と AddSchemaTransformer を使って OpenAPI ドキュメントをカスタマイズする方法

    .NET 11 に組み込まれた OpenAPI トランスフォーマーパイプラインの詳細解説:operation トランスフォーマーと schema トランスフォーマーの違い、コンテキストオブジェクト、実行順序、DI で活性化されるトランスフォーマー、そしてヘッダー・レスポンス・サンプル・プロパティ単位の調整のためのレシピ。

  • .NET 11 の Runtime Async が EnablePreviewFeatures フラグを不要に

    .NET 11 のプレビュー版が 11 月のリリースへ向けて進むにつれ、Runtime Async は成熟しました。net11.0 プロジェクトは 1 つの MSBuild プロパティで有効化でき、ランタイムライブラリ自体もそれでコンパイルされるようになりました。

  • .NET の PGO とは何か、そして有効化する必要はあるのか?

    PGO(プロファイルに基づく最適化)は、.NET の JIT がワークロードで実際に通る型や分岐に合わせてホットなコードを特化させる仕組みです。Dynamic PGO は .NET 8 以降デフォルトで有効なので、.NET 8 以降では有効化する必要はありません。PGO が何をするのか、その効果をどう確認するのか、そして設定に手を入れる数少ないケースを解説します。

  • 階層型コンパイルとは何か、どう捉えればよいのか?

    階層型コンパイルは、.NET の JIT に各メソッドを2回コンパイルさせます。まずアプリを起動させるために高速かつ未最適化で、次にランタイムがメソッドをホットだと認識した時点で完全な最適化を施して再度コンパイルします。本記事では tier 0、tier 1、オンスタック置換、Dynamic PGO がどう組み合わさるか、そしてそれらをどう観測し調整するかを解説します。

  • IHostedService の契約とは何か、いつ使うべきか

    IHostedService は、.NET の汎用ホストが起動時とグレースフルシャットダウン時に呼び出す 2 つのメソッド (StartAsync/StopAsync) を持つインターフェースです。この契約が何を保証するのか、直接実装すべきなのはいつか、そして人がつまずく .NET 10 と 11 の動作変更を解説します。

  • トリムセーフなコードとは何か、どう書けばよいのか?

    トリムセーフなコードとは、.NET トリマーが静的に到達可能だと証明できるコードのことで、自己完結型アプリから未使用コードが削除されても生き残ります。本記事は実践ガイドです。アナライザーを有効にし、すべての IL2xxx 警告をゼロにし、リフレクションを DynamicallyAccessedMembers で注釈し、RequiresUnreferencedCode を公開 API まで伝播させ、解析不能なパターンをソースジェネレーターに置き換えます。

  • 解決: C# の CS9035「Required member 'X' must be set in the object initializer」

    CS9035 は required とマークされたメンバーが割り当てられていないことを意味します。オブジェクト初期化子で割り当てるか、すべての required メンバーを設定する [SetsRequiredMembers] 付きのコンストラクターを追加します。

  • ASP.NET Core 11 で IProblemDetailsService を使って Minimal API のバリデーションエラーレスポンスをカスタマイズする方法

    AddProblemDetails に CustomizeProblemDetails コールバックを渡して、ASP.NET Core 11 の組み込み Minimal API バリデーションが返す 400 の形を作り直します。traceId を追加したり、title を書き換えたり、400 を 422 に切り替えたり、カスタム IProblemDetailsWriter で完全に制御したりできます。

  • ASP.NET Core 11 の minimal API で JWT bearer 認証を設定する方法

    ASP.NET Core 11 の minimal API における JWT bearer 認証の完全で動作する設定です。パッケージのインストール、AddAuthentication().AddJwtBearer() の配線、トークンの発行、RequireAuthorization によるエンドポイントの保護、ロールと claim のポリシーの追加、そして dotnet user-jwts によるテストまでを扱います。

  • EF Core 11 で名前付きクエリフィルターを使ってソフト削除とマルチテナンシーを実装する方法

    EF Core 11 で同じエンティティに 2 つの独立したグローバルクエリフィルターを適用します。ソフト削除フィルターとテナントフィルターにそれぞれ名前を付け、IgnoreQueryFilters で一方だけを無効化できるようにします。

  • C# で await using を使って IAsyncDisposable を実装・利用する方法

    C# における IAsyncDisposable の完全ガイド。await using をいつ使うか、DisposeAsync と DisposeAsyncCore を正しく書く方法、そしてリソースをリークさせるスタッキングと ConfigureAwait の落とし穴を解説します。

  • .NET 11 で CancellationToken を非同期メソッドに伝播させる方法

    .NET 11 の非同期呼び出しチェーンのすべての層に CancellationToken をきれいに通す方法: 最後のパラメーターの慣習、既定値、リンクされたトークン、ASP.NET Core の RequestAborted、そして渡し忘れを検出する CA2016 アナライザー。

  • C# で CancellationTokenSource.CancelAfter を使って非同期操作にタイムアウトを設定する方法

    .NET 11 で非同期デッドラインを適用する CancellationTokenSource.CancelAfter の完全ガイド: コンストラクターと CancelAfter の違い、リンクされたトークン、例外処理、Task.WaitAsync、プール向け TryReset、TimeProvider によるテスト可能なタイムアウト。

2026 / 06

2026 / 05

2026 / 04

2026 / 02

2026 / 01

2025 / 04

2025 / 01

  • .NET のパフォーマンス: ToList vs ToArray

    .NET 9 は InlineArray を活用して ToArray のパフォーマンスを大幅に改善し、ToList より高速かつメモリ効率の良いものにします。.NET 8 と .NET 9 を比較したベンチマークを参照ください。

  • C# 13: 認識される任意のコレクション型で params コレクションを使う

    C# 13 では params 修飾子が配列を超えて Span、ReadOnlySpan、IEnumerable、その他のコレクション型をサポートするように拡張され、ボイラープレートが減って柔軟性が向上します。

  • C# 13 への切り替え方

    'Feature is not available in C# 12.0' を修正し、ターゲットフレームワークを変更するか .csproj ファイルで LangVersion を設定して、プロジェクトを C# 13 に切り替える方法。

2024 / 12

  • C# 14.0 の新機能

    field キーワード、拡張メンバー、null 条件付き代入、暗黙的な span 変換など、C# 14.0 のすべての新機能をまとめます。

  • C# 言語のバージョン履歴

    C# の進化により、モダンで高パフォーマンスな言語へと変貌を遂げました。本ガイドはあらゆる主要なマイルストーンを追跡します。初期 (C# 1.0 - 1.2)。C# は 2002 年に .NET Framework の主要言語として登場しました。Java に似ていましたが、Windows 開発に焦点を当てていました。バージョン 1.2 はその後すぐに小さな...

2023 / 11

2023 / 10

  • C# 機能を experimental としてマークする方法

    C# 12 から、新しい ExperimentalAttribute を使って型、メソッド、プロパティ、アセンブリを experimental としてマークできるようになりました。diagnosticId、pragma タグ、UrlFormat と組み合わせた使い方を紹介します。

  • C# ref readonly パラメーター

    C# の ref readonly 修飾子は、読み取り専用の参照を渡すより透明性の高い方法を提供します。in 修飾子に対して、より厳しい制約と呼び出し側からの見えやすさをどう改善するかを解説します。

  • C# 配列をシャッフルするには?

    C# で配列をシャッフルするいちばん簡単な方法は、.NET 8 で導入された Random.Shuffle を使うことです。配列にも Span にも、in-place で動作します。

  • C# NullReferenceException とは何で、どう直すか?

    C# で NullReferenceException が発生する原因、デバッグの仕方、null チェックや null 条件演算子、null 許容参照型を使った防止方法を解説します。

  • 既存の JsonSerializerOptions に TypeInfoResolver を追加・削除する

    .NET 8 で追加された TypeInfoResolverChain プロパティを使って、既存の JsonSerializerOptions に TypeInfoResolver を追加したり、そこから削除したりする方法を解説します。

  • C# 12 Interceptors

    .NET 8 のコンパイラーに導入された実験的機能、C# 12 の interceptors を解説します。InterceptsLocation 属性を使ってコンパイル時にメソッド呼び出しを差し替える方法を紹介します。

2023 / 09

2023 / 08

  • C# 12 インライン配列 (Inline arrays)

    インライン配列を使うと、struct 型の中に固定サイズの配列を作成できます。インラインバッファーを持つそのような struct は、unsafe な固定サイズバッファーと同等のパフォーマンスを発揮します。インライン配列は主にランタイムチームや一部のライブラリ作者が、特定のシナリオでパフォーマンスを改善するために使うことを想定しています。多くの場合...

  • C# 12 コレクション式 (Collection expressions)

    C# 12 では、配列を作るための新しい簡潔な構文が導入されました。次のような形です。重要な点として、配列の型は明示的に指定する必要があるため、変数宣言に var は使えません。同様に、Span<int> を作りたい場合は次のようにできます。多次元配列 この簡潔な構文の利点は...

  • C# プロセスの終了を待つには?

    プロセスの終了を待つには WaitForExit メソッドが使えます。コードは同期的にプロセスの終了を待ち、その後で実行を再開します。例を見てみましょう。上のコードは新しい cmd.exe プロセスを開始し、timeout 5 コマンドを実行します。process.WaitForExit() の呼び出しによって、プログラムは...

  • C# 12 任意の型に alias を付ける

    C# 12 では using alias ディレクティブの制限が緩和され、名前付きの型だけでなく任意の型に alias を付けられるようになりました。これにより、タプル、ポインター、配列型、ジェネリック型などにも alias を付けられます。タプルの完全な構造的な形を書く代わりに、短くて分かりやすい alias を...

  • C# に With...End With 文に相当する構文はありますか?

    VB の With...End With 文は、単一のオブジェクトを繰り返し参照する一連の文を、メンバーアクセスのための簡略化された構文で実行できます。C# に相当する構文はあるでしょうか。ありません。最も近いのはオブジェクト初期化子ですが、これは新しいオブジェクトのインスタンス化にしか使えません。

2023 / 07

  • C# 12 - プライマリコンストラクター

    C# 12 から、クラスや構造体内でプライマリコンストラクターを定義できるようになりました。パラメーターは型名の直後の括弧に置かれます。これらのパラメーターは広いスコープを持ち、プロパティやフィールドの初期化、メソッドやローカル関数内の変数、ベースコンストラクターへの引き渡しに利用できます。

2023 / 06

  • C# でプログラミングを始める方法

    Visual Studio のセットアップから、最初のプログラムを書くこと、学習リソースを見つけることまで、C# プログラミングを始めるための初心者向けガイドです。

  • C# 12 への切り替え方法

    ターゲットフレームワークを .NET 8 に更新するか、.csproj ファイルで LangVersion を設定して、C# 12 の言語バージョンエラーを解決します。

  • C# 12 の新機能

    プライマリコンストラクター、ラムダ既定パラメーター、コレクション式、インライン配列など、C# 12 の新機能の概要です。

2023 / 05

2023 / 03

2020 / 11

2020 / 05

  • C# using var (using 宣言)

    C# 8 の using 宣言 (`using var`) を使えば、入れ子の波かっこなしで IDisposable オブジェクトを破棄できます。構文、スコープのルール、`using` ブロックを選ぶべき場面を解説します。

2020 / 04

  • C# 8.0 の null 合体代入 ??=

    キャッシュや条件付き代入などの実用的な例を交えて、C# 8.0 の null 合体代入演算子 (??=) の動作を学びます。

2019 / 01

2013 / 10

2013 / 06

2013 / 05

2012 / 01

  • C#: Hex を Color に変換する

    Hex のカラーコード (RGB と ARGB の両形式) を Color オブジェクトに変換する C# の拡張メソッドです。

  • code snippets を使って生産性を上げる

    Visual Studio の code snippets が、短いエイリアスで再利用可能なコード片を挿入できる仕組みで、いかに生産性を上げてくれるかを解説します。

すべてのまとめ ホーム