C#のバージョン一覧と確認方法|最新C# 14までの対応.NET・Visual Studio早見表
はじめに
C# の version を調べるとき、実際には「C# の言語バージョン」「.NET のターゲットフレームワーク」「Visual Studio/.NET SDK の組み合わせ」を切り分けて考える必要があります。C# の既定バージョンはプロジェクトのターゲット TFM によって決まり、Visual Studio の UI で言語バージョンを直接変えるのではなく、通常はターゲットフレームワークを変更して整合させます。さらに、LangVersion を明示すれば上書きもできますが、latest の固定はビルド再現性の観点から推奨されません。
1. C#のバージョンとは?まず知っておきたい基本
C# のバージョンとは、コンパイラが理解できる文法や機能の世代を指します。たとえば、C# 14 で追加された機能を使うには、C# 14 を解釈できるコンパイラと、それを許すターゲット環境が必要です。言語の新機能は、コンパイラだけで完結しないこともあり、.NET 側のランタイムやライブラリの更新が必要になる場合があります。
1-1. C#の「言語バージョン」と.NET/Visual Studio/SDK/Visual Studioの違い
C# の「言語バージョン」は、if や record のような構文・機能の世代です。.NET はランタイムとライブラリを含む実行基盤で、Visual Studio は開発環境、.NET SDK はコンパイルや実行に必要なツール一式です。C# の新機能は主に SDK に含まれるコンパイラで有効になり、Visual Studio はその体験を支える役割を持ちます。
1-2. C#のバージョンは何で決まる?ターゲットフレームワークとの関係
C# の既定バージョンは、プロジェクトのターゲットフレームワークに連動して決まります。公式ドキュメントでは、たとえば .NET 10 は C# 14、.NET 9 は C# 13、.NET 8 は C# 12、.NET Framework はすべて C# 7.3 が既定とされています。また、ターゲット TFM に対応しない新しい C# バージョンを指定することはサポートされません。
1-3. 「C# version」で検索する人が知りたいこと
「C# version」で検索する人の多くは、次の3点を知りたいはずです。今使っている C# のバージョンは何か、どの .NET にどの C# が対応しているか、そしてどうやって自分のプロジェクトの言語バージョンを確認・変更するか、です。これらは Visual Studio のプロジェクト設定、csproj の LangVersion、#error version、dotnet --info の組み合わせで確認できます。
1-4. 最新版はC# 14|対応する.NETとVisual Studioの概要
C# 14 は最新の C# リリースで、公式の新機能ページでは .NET 10 に対応し、最新の Visual Studio 2026 版または .NET 10 SDK で試せると案内されています。Visual Studio 2026 のリリースノートでも、.NET 10 と C# 14 のサポートが組み込まれていることが明記されています。
2. C#バージョン一覧早見表|C# 1.0からC# 14まで
C# は 2002 年の 1.0 から始まり、現在は C# 14 まで進化しています。初期はクラスやインターフェイスなどの基本機能が中心でしたが、3.0 で LINQ、5.0 で async / await、8.0 で nullable reference types、9.0 で record、10 以降で毎年新機能が追加される流れになりました。
2-1. C#バージョン・リリース年・対応.NET・Visual Studio一覧
C# 1.0 は Visual Studio .NET 2002 とともに登場し、1.2 は Visual Studio .NET 2003、2.0 は Visual Studio 2005、3.0 は Visual Studio 2008 とともに広がりました。4.0 は Visual Studio 2010、5.0 は Visual Studio 2012、6.0 は Visual Studio 2015、7.0 は Visual Studio 2017、8.0 は .NET Core 3.0 世代、9.0 は .NET 5、10 は .NET 6、11 は .NET 7、12 は .NET 8、13 は .NET 9、14 は .NET 10 に対応する流れです。
2-2. C# 14/C# 13/C# 12/C# 11の対応環境
C# 14 は .NET 10 で使え、最新の Visual Studio 2026 版または .NET 10 SDK で試せます。C# 13 は .NET 9、C# 12 は .NET 8、C# 11 は .NET 7 に対応し、それぞれ最新の Visual Studio 2022 系または対応 SDK で利用できます。
2-3. C# 10以前の対応環境と主な用途
C# 10 は .NET 6 の世代で、global using や file-scoped namespace など、定型コードを減らす方向に進みました。C# 9 は .NET 5 世代で record とトップレベルステートメントが大きな特徴です。C# 8 は .NET Core 3.0 を前提に、nullable reference types や async streams を導入しました。C# 7.3 は 2018 年のリリースで、ref 関連の強化や安全性・性能の改善が中心です。
2-4. .NET Frameworkで使えるC#バージョンの上限
公式の言語バージョン表では、.NET Framework の既定はすべて C# 7.3 です。つまり、.NET Framework を使い続ける限り、最新の C# 14 や C# 13 の文法は標準では使えません。古い基盤では、一部の新機能がランタイムやライブラリの追加要件を持つこともあるため、言語だけ先に上げても動かない場合があります。
2-5. バージョンごとの主な新機能一覧
C# 1.0 はクラス、構造体、インターフェイス、イベント、プロパティ、デリゲートなど、基礎を形作った世代です。2.0 ではジェネリクス、部分型、匿名メソッド、nullable value types、iterator が入り、3.0 では LINQ を支える query、ラムダ式、extension methods、匿名型が加わりました。4.0 は dynamic、5.0 は async / await、6.0 は文字列補間や nameof、7.x は out var、タプル、pattern matching の拡張、8.0 は nullable reference types、9.0 は record とトップレベルステートメント、10 は global using、11 は raw string literals と generic math、12 は primary constructors と collection expressions、13 は params collections など、14 は extension members や null-conditional assignment などが目玉です。
3. 最新C# 14の特徴と対応環境
C# 14 は、日常の書き方をより自然にする改善が多いのが特徴です。拡張メンバー、null 条件付き代入、nameof の強化、Span<T> と ReadOnlySpan<T> の暗黙変換の拡張、単純なラムダ引数の修飾子、field backed properties、partial events/constructors、ユーザー定義の複合代入演算子、file-based apps 向けの新しいプリプロセッサ ディレクティブが含まれます。
3-1. C# 14で追加された主な新機能
C# 14 では、拡張メンバーで拡張プロパティまで書けるようになり、extension ブロックとしてまとめて定義できます。field backed properties は自動実装プロパティの内部フィールドを意識した書き方を可能にし、partial events と constructors は部分定義の柔軟性を広げます。さらに、簡単なラムダに修飾子を付けやすくなり、null 条件付き代入や nameof の対応範囲拡大によって、コードの冗長さが減ります。
3-2. C# 14を使うために必要な.NETバージョン
C# 14 は .NET 10 に対応しています。公式ドキュメントでも、C# 14 は .NET 10 上でサポートされると案内されており、.NET 10 SDK を入れることで最新機能を使えます。
3-3. C# 14を使うために必要なVisual Studioバージョン
Visual Studio 側では、Visual Studio 2026 が C# 14 と .NET 10 を完全にサポートします。リリースノートには、構文の強調表示、エラー検出、コード補完まで含めて C# 14 が統合されていると明記されています。
3-4. C# 14が使えない場合に確認すべきポイント
C# 14 が使えないときは、まずプロジェクトのターゲットフレームワークが .NET 10 になっているかを確認します。次に、インストール済みの SDK が .NET 10 か、Visual Studio が C# 14 に対応した最新版かを見ます。最後に、csproj の LangVersion が固定されていないか、preview や古い値で上書きされていないかを確認すると原因を絞りやすくなります。
4. 自分のC#バージョンを確認する方法
C# のバージョン確認は、Visual Studio の UI、csproj、コマンドライン、そして #error version の4系統で見るのが確実です。どれも「今のプロジェクトで実際に使われている言語バージョン」を把握するのに役立ちます。
4-1. Visual StudioでC#バージョンを確認する方法
Visual Studio では、プロジェクトのプロパティ画面から確認できます。Build タブの Advanced にある Language version が現在の設定です。なお、UI で手動変更するよりも、ターゲットフレームワークを変えたほうが既定の言語バージョンと整合しやすくなります。
4-2. csprojファイルでLangVersionを確認する方法
*.csproj に <LangVersion> が書かれていれば、その値が明示的な指定です。たとえば preview を入れると、コンパイラがサポートする最新のプレビュー構文を使えます。ただし、latest は環境差でビルド結果が変わるため、安定運用では避けたほうが安全です。
4-3. コマンドラインで確認する方法
SDK とランタイムのバージョンを確認したいなら、dotnet --info が便利です。これでインストール済みの SDK とランタイムの両方が表示されます。C# の言語バージョンそのものではなく、まず SDK の世代を確認したいときに向いています。
4-4. #error versionを使ってコンパイラの言語バージョンを確認する方法
現在の C# 言語バージョンを直接知りたいなら、コード中に #error version を一時的に入れます。これによりコンパイラが CS8304 を出し、コンパイラのバージョンと現在選択されている言語バージョンをメッセージで返します。確認が終わったら、もちろんこの行は削除します。
4-5. .NET SDKのバージョンを確認する方法
.NET SDK のバージョンは dotnet --info で見られます。さらに更新状況を見たい場合は dotnet sdk check も使えます。こちらは最新の SDK やランタイム、サポート状況を追いかける用途に向いています。
5. C#のバージョンを指定・変更する方法
C# のバージョンを変えたいときは、csproj に LangVersion を書くのが基本です。Visual Studio のプロパティ画面から見える値も結局はこの設定とターゲットフレームワークの組み合わせで決まるため、設定ファイルを理解しておくとトラブルを減らせます。
5-1. csprojにLangVersionを指定する方法
csproj に次のように書けば、言語バージョンを明示できます。
XML<PropertyGroup>
<LangVersion>14.0</LangVersion>
</PropertyGroup>
プレビュー機能を試す場合は preview も指定できますが、公式ドキュメントでは latest の固定は非推奨です。複数プロジェクトをまとめて制御したい場合は Directory.Build.props でも設定できます。いずれの場合も、ターゲット TFM より新しい言語バージョンはサポートされません。
まとめ
C# の version は、単なる番号ではなく「どの .NET をターゲットにしているか」「どの SDK を入れているか」「どの Visual Studio を使っているか」で決まります。最新の C# 14 を使うなら .NET 10 と最新の Visual Studio 2026 系が基本です。一方で、.NET Framework を使う場合は C# 7.3 が上限なので、最新構文を使いたいなら .NET の移行も合わせて検討するのが近道です。

