.NET 11がC# 15のunion型を搭載、.NET 8と.NET 9はサポート終了
.NET 11(ドットネット11)とC# 15は11月10日に公開され、同じ日に.NET 8と9のサポートが終わった。実地テストでは、unionのケース漏れは警告だけでビルドが通り、実行時にクラッシュした。
5 分で読めます
英語の原文から機械翻訳したものです。原文はClaire Whitmoreが事実確認と編集を行いました。内容に相違がある場合は英語版が優先されます。 編集方針

数字で見る
- .NET 8と.NET 9のサポート終了日
- 2026年11月10日
- .NET 10と.NET 11のサポート終了日
- 2028年11月14日
- Standard Term Supportリリースである.NET 11のサポート期間
- 2年
Microsoftは2026年11月10日、C# 15と新しいunion型(共用体型)を含む.NET 11をリリースした。Microsoftのサポートポリシーページによると、同じ日に.NET 8と.NET 9のサポートが終了した。Microsoftの.NETは、アプリを作るための無料のオープンソース基盤で、C#はその主要言語だ。今も.NET 8や9で動くアプリには、Microsoftからのセキュリティ修正がもう届かない。
.NET Blogの発表は、11月10日から13日まで開かれる.NET Conf 2026の初日に出た。Thurrott.comによると、.NET 11はStandard Term Support(STS)リリースで、サポート期間は2年だ。.NET 10のようなLong Term Support(LTS)リリースは3年サポートされる。
.NET 11とC# 15の中身
目玉は言語だ。C# 15は.NET 11を対象とするすべてのプロジェクトで既定となるため、追加の設定はいらない。Microsoftの「C# 15の新機能」ページには、次の機能が載っている。
| 機能 | 何をするか | プレビュー用フラグが必要か |
|---|---|---|
| Union型 | 決められた型の一覧のうち、ちょうど1つを保持する型 | 不要 |
| Closed階層 | サブクラスをコンパイラーがすべて把握している基底クラス | 不要 |
| コレクション式の引数 | 容量などのコンストラクター設定を[...]の中で渡す | 不要 |
| 拡張インデクサー | 自分で書いていない型に[index]アクセスを追加する | 不要 |
ラベル付きbreakとcontinue | 内側のループから外側のループを抜ける | 不要 |
| 古いランタイムでの静的インターフェイスメンバー | 新しいランタイムの支援なしで、インターフェイスに普通の静的メソッドを置ける | 不要 |
| メモリ安全性のルール | unsafeなポインターコード向けの新ルール | 必要 |
Unionは、値がいくつかの形のどれかになる場合に役立つ。たとえば支払いが、カード、銀行振込、クーポンのいずれかである場合だ。コンパイラーは、コードがすべての形を扱っているかを確認する。
それ以外はツールとライブラリの改良だ。.NET Blogは、ビルドを速くするネイティブのコマンドラインホストと、常駐するMSBuildサーバーを挙げている。ASP.NET CoreでのOpenAPI 3.2対応や、MCPを使うAIの構成要素も載っている。MCPはModel Context Protocolの略で、AIモデルをツールにつなぐ仕組みだ。スマートフォンとデスクトップ向けのアプリフレームワークである.NET MAUIは、既定でCoreCLRで動くようになった。Microsoftは「数百のランタイム最適化」をうたうが、発表に数値はない。
サポート中の.NETバージョン
下の表は、2026年11月10日に更新されたMicrosoftのサポートポリシーページによる。このページによると、偶数番号のリリースはLTS、奇数番号はSTSだ。
| バージョン | 種類 | リリース日 | 最新パッチ | サポート終了 |
|---|---|---|---|---|
| .NET 11 | STS | 2026年11月10日 | 11.0.0 | 2028年11月14日 |
| .NET 10 | LTS | 2025年11月11日 | 10.0.15 | 2028年11月14日 |
| .NET 9 | STS | 2024年11月12日 | 9.0.23 | 2026年11月10日 |
| .NET 8 | LTS | 2023年11月14日 | 8.0.34 | 2026年11月10日 |
目を引く点が1つある。.NET 11と.NET 10は、どちらも2028年11月14日の同じ日にサポートが終わる。つまりSTSリリースを選んでも、LTSより寿命が短くなるわけではない。Microsoftのポリシーは、サポート対象は各バージョンの最新パッチだけで、各バージョンの最後の6か月はセキュリティ修正のみになるとも定めている。
Tech AI Wireのテスト: .NET 11 SDKでC# 15のunionを試す
macOS 26で行ったTech AI Wireのテストでは、公式のmcr.microsoft.com/dotnet/sdk:11.0コンテナイメージ(Ubuntu 26.04.1、arm64)がSDK 11.0.100と表示した。新しいコンソールプロジェクトはnet11.0を対象とし、言語の設定はなかった。MicrosoftのC# 15のサンプルは、書かれたとおりにコンパイルされ、動いた。ラベル付きbreakには小さなグリッドを追加した。
Pet pet = new Dog("Rex");
string name = pet switch
{
Dog d => d.Name,
Cat c => c.Name,
Bird b => b.Name,
};
public union Pet(Cat, Dog, Bird);
dotnet runの初回実行は、ビルドを含めて2.6秒だった。ほかの機能も動いた。大文字と小文字を区別しない比較子で作ったHashSetは、"Hello"、"HELLO"、"hello"のうち1つだけを残した。ラベル付きbreakは、2つのループを一度に抜けた。
次に、テストではswitchからBirdの行を消した。それでもビルドは成功した。表示されたのは警告CS8509で、文面は "The switch expression does not handle all possible values of its input type (it is not exhaustive). For example, the pattern 'Bird' is not covered." だ。switch式が入力型のすべての値を扱っておらず、たとえば'Bird'が漏れている、という意味になる。その後プログラムにBirdが渡されると、SwitchExpressionExceptionで終了コード134を出してクラッシュした。
直すには設定1つで足りた。-p:WarningsAsErrors=CS8509を付けると、同じビルドがエラーCS8509と終了コード1で失敗した。つまり安全チェックはあるが、既定では警告にすぎない。
開発者にとっての意味
今週注意すべきことは2つある。古いバージョンと、新しい習慣だ。
- .NET 8と.NET 9から移行する。 どちらも11月10日でパッチが止まった。Microsoftが載せる最後のバージョンは8.0.34と9.0.23だ。今後見つかるセキュリティ上の欠陥は、これらでは塞がれない。
- 10か11かは、サポート期間ではなく機能で選ぶ。 どちらも2028年11月14日までサポートされる。.NET 11ならC# 15が使える。.NET 8を使うチームにとっては、.NET 10のほうが小さな移行で済む。
- unionを使う前にCS8509をエラーにする。 プロジェクトファイルに
<WarningsAsErrors>CS8509</WarningsAsErrors>を追加する。テストのビルドを失敗させたのと同じ設定だ。これがないと、unionに新しいケースを足しても問題なくコンパイルされ、本番環境で初めて失敗しかねない。 - メモリ安全性のルールには、今は手を出さない。 まだプレビュー用フラグが必要なので、今後のリリースまでに変わる可能性がある。
- コンテナのビルドを更新する。 テストでは、
sdk:11.0タグでSDK 11.0.100が取得された。Dockerfileではイメージをダイジェストで固定し、テストしたSDKで毎回ビルドされるようにしておきたい。
.NET 10を使うチームには期限がない。ブランチでC# 15を試し、頼っているライブラリが.NET 11に対応した時点で移ればよい。
出典
- Announcing .NET 11 - .NET Blog
- .NET and .NET Core Support Policy - Microsoft
- What's new in C# 15 - Microsoft Learn
- Microsoft Releases .NET 11 - Thurrott.com
関連記事
C++26がContractsを巡りISO投票で否決、GCC 16で検証
C++26はContracts(コントラクト、契約プログラミング)を巡ってISO投票で否決された。Tech AI WireはGCC 16.2で4つのモードをすべて試し、1つは10 / 0に警告なしで0を出力した。

CPythonのJIT、PEP 836の取り下げで削除へ
PEP 836の作成者が2026年10月19日にこの提案を取り下げました。そのため、CPythonの実験的なJIT(ジャストインタイム)コンパイラは、mainブランチから削除される見通しです。

TypeScript 7.1 Betaが新しいAPIとコンテンツマッパーを追加
TypeScript(タイプスクリプト)7.1 Betaは、6.0から移れなかったツールのためにプログラムから使えるAPIを復活させ、.vueファイル向けのコンテンツマッパーを追加しました。型チェックは7.0より最大1.9倍速くなります。