C#はMicrosoftが開発した汎用性の高いプログラミング言語であり、.NET Frameworkや.NET Coreといったプラットフォーム上で動作します。デスクトップアプリケーションからWebアプリケーション、モバイルアプリケーションまで幅広い開発に利用されています。
C#のバージョンは頻繁に更新され、新しいバージョンがリリースされるたびにさまざまな機能追加や改善が行われています。このため、開発者は現在使用しているC#のバージョンを正確に把握し、プロジェクトに適したバージョンを使用することが重要です。
本記事では、C#のバージョンを確認する方法について、Visual Studio、コマンドライン、コードの3つの方法を解説します。また、C#コンパイラのバージョン確認や、バージョンごとの主要な機能についても詳しく解説します。
目次
閉じる
1.C# バージョン確認の基本概念
C#のバージョン管理を理解するために、まずは基本的な概念を押さえておきましょう。
C#には言語バージョンとコンパイラバージョンという2つのバージョンがあり、それぞれ異なる意味を持ちます。また、C#は.NET Frameworkや.NET Coreといったフレームワーク上で動作するため、C#のバージョンとフレームワークのバージョンの関係性も理解しておく必要があります。
この章ではC#の言語バージョンとコンパイラのバージョンの違いや、.NET Frameworkとの関係性について解説します。
C#バージョンとコンパイラバージョンの違い
C#の言語バージョンとは、C#言語自体の仕様を示すバージョンのことです。新しい言語バージョンがリリースされると、新しい構文や機能が追加されます。例えば、C# 8.0では非null参照型が導入され、C# 9.0ではレコード型が追加されました。
一方、コンパイラバージョンは、C#のソースコードをコンパイルして実行可能な形式に変換するコンパイラのバージョンです。通常、コンパイラは特定の言語バージョンをサポートしており、最新のコンパイラは古い言語バージョンもサポートしていることが一般的です。
ただし、古いコンパイラは新しい言語バージョンをサポートしていない場合があります。例えば、C# 8.0で導入された非null参照型を使用するには、C# 8.0以降をサポートするコンパイラが必要です。
C#のバージョンを確認するときは、言語バージョンとコンパイラバージョンの両方を把握することが重要だと覚えておきましょう。
C#バージョンと.NET Frameworkとの関係性
C#は.NET Frameworkまたは.NET Core上で動作します。.NET FrameworkはWindows上で動作するアプリケーションを開発・実行するためのプラットフォームであり、.NET Coreはクロスプラットフォームに対応したオープンソースプラットフォームです。
C#の各バージョンは.NET Frameworkのバージョンと密接に関係しています。例えば、C# 13は.NET 9以降、C# 12は.NET 8以降、C# 11は.NET 7以降でのみサポートされています。
このため、プロジェクトを開発するときは、使用する.NET Frameworkまたは.NETバージョンに対応したC#バージョンを選択する必要があります。互換性のない組み合わせを選択すると、コンパイルエラーが発生したり、プログラムが正常に動作しなくなる可能性があります。
Microsoftの公式ドキュメントには、C#バージョンと.NET Framework/NETバージョンの対応関係が詳しく記載されているため、開発者は常に最新の情報を確認することが重要です。
2.C#のバージョンを確認する3つの方法
C#のバージョンを確認する方法はいくつか存在します。
この章では、Visual Studioを使用する方法、コマンドラインを使用する方法、そしてプログラムコードを使用する方法の3つを解説します。
Visual StudioでC#バージョンを確認する方法
Visual Studioは、Microsoftが提供する統合開発環境(IDE)です。Visual Studioを使用すると、GUIを通じてC#のバージョンを簡単に確認できます。
Visual StudioでC#のバージョンを確認する方法は以下のとおりです。
Visual StudioでC#プロジェクトを開き、ソリューションエクスプローラーでプロジェクトを右クリックして「プロパティ」を選択します。
プロパティウィンドウの「アプリケーション」タブで「ターゲットフレームワーク」を確認します。これにより、プロジェクトが使用している.NET Frameworkまたは.NETのバージョンがわかります。
プロパティウィンドウの「ビルド」タブを選択し、詳細設定を開きます。その中の「言語バージョン」で、プロジェクトで使用するC#の言語バージョンを確認できます。
なお、Visual StudioのバージョンによってサポートされるC#のバージョンも異なります。C#の最新の機能を利用したいときは、Visual Studioのバージョンも最新化しておきましょう。
コマンドラインでのC#バージョン確認方法
コマンドラインを使用してC#のバージョンを確認する方法もあります。
コマンドプロンプトまたはPowerShellで「csc -help」と入力すると、C#コンパイラの情報とバージョンが表示されます。また「dotnet --version」コマンドを実行すると、インストールされている.NET SDKのバージョンを確認できます。さらに「dotnet --list-sdks」コマンドを使用すると、システムにインストールされているすべての.NET SDKのバージョンを一覧表示できます。
これらのコマンドを使用することで、C#コンパイラのバージョンを簡単に確認できます。
プログラムコードからC#バージョンを確認する方法
プログラムコードからC#のバージョンを確認する方法は、実行時にC#のバージョンやランタイム情報を取得したい場合に役立ちます。
プログラムコードからC#のバージョンを確認する方法はいくつか存在します。
System.Environment.Versionプロパティを使用: System.Environment.Versionプロパティを使用すると、実行環境のCLR(共通言語ランタイム)のバージョンを取得できます。CLRのバージョンは、C#のバージョンと間接的に関連しています。
System.Runtime.InteropServices.RuntimeInformation.FrameworkDescriptionプロパティを使用: System.Runtime.InteropServices.RuntimeInformation.FrameworkDescriptionプロパティを使用すると、現在実行中のアプリケーションが使用している.NETランタイムのバージョンを取得できます。
定義済みシンボルを使用: #ifディレクティブと定義済みのシンボルを使用すると、コンパイル時にC#のバージョンを判定し、それに応じてコードを切り替えることができます。
それぞれの使用例は以下のとおりです。
using System; using System.Runtime.InteropServices;
{ public static void Main(string[] args) { // 1. System.Environment.Versionプロパティを使用 Console.WriteLine("CLR Version: " + Environment.Version);
Console.WriteLine(".NET Runtime: " + RuntimeInformation.FrameworkDescription);
#if NET7_0 Console.WriteLine("C# Version: C# 11.0 or later"); #elif NET6_0 Console.WriteLine("C# Version: C# 10.0"); #elif NET5_0 Console.WriteLine("C# Version: C# 9.0"); #elif NETCOREAPP3_1 Console.WriteLine("C# Version: C# 8.0"); #elif NETCOREAPP3_0 Console.WriteLine("C# Version: C# 8.0"); #elif NETCOREAPP2_1 Console.WriteLine("C# Version: C# 7.3"); #elif NET472 Console.WriteLine("C# Version: C# 7.3"); #else Console.WriteLine("C# Version: Unknown"); #endif } } |
これらの方法を使用することで、プログラム内でC#のバージョンを動的に判断できます。特定のバージョンに依存する処理を実装したいときに活用しましょう。
関連記事
C#とは?基本文法や特徴、メリット、開発分野まで初心者に必要な情報をわかりやすく解説
【C#】Listと配列との違いや初期化・削除・要素数取得・型指定なしの使い方を紹介
3.C#コンパイラのバージョンを確認する方法
特定のC#言語機能が使えるかどうか判断するときは、C#コンパイラのバージョンを確認します。C#コンパイラは、C#のソースコードを中間言語に変換するものであり、コンパイラのバージョンによってサポートされる言語機能が異なります。
C#コンパイラのバージョンを確認することは、開発環境のトラブルシューティングや互換性の検証に役立ちます。この章では、cscコマンドとdotnetコマンドを使用してC#コンパイラのバージョンを確認する方法を解説します。
cscコマンドによる確認
cscコマンドは、C#コンパイラを直接実行するためのコマンドです。このコマンドを使用すると、C#コンパイラのバージョンを簡単に確認できます。
cscコマンドでC#コンパイラのバージョンを確認する手順は、以下のとおりです。
コマンドプロンプトを開く: コマンドプロンプトまたはPowerShellを開きます。
cscコマンドを実行: csc -versionと入力してEnterキーを押します。
バージョン情報を確認: コマンドの実行結果として、C#コンパイラのバージョン情報が表示されます。
cscコマンドは、通常、.NET Framework SDKまたはVisual Studioに含まれています。うまくいかないときは、これらのツールがインストールされていることを確認してください。
dotnetコマンドによる確認
.NET Core/.NET 5以降の環境では、dotnetコマンドを使用してコンパイラの情報を確認できます。dotnet --versionコマンドでSDKバージョンを確認し、dotnet --infoで詳細な環境情報を取得します。
dotnetコマンドでC#のコンパイラのバージョンを確認する手順は、以下のとおりです。
コマンドプロンプトを開く: コマンドプロンプトまたはPowerShellを開きます。
dotnet --infoコマンドを実行: dotnet --infoと入力してEnterキーを押します。
バージョン情報を確認: コマンドの実行結果として、.NET SDKに関する様々な情報が表示されます。C#コンパイラのバージョンは直接表示されません。SDKのバージョンから対応するC#バージョンを推測する必要があります。実際の言語バージョンを確認するには、コード内に#error versionを記述する方法が確実です。
dotnet --infoコマンドを使うと、.NET SDKのバージョン、ランタイムのバージョン、環境変数など、開発環境に関するさまざまな情報を確認できます。
関連記事
【C#】DateTime完全ガイド:初期化・文字列変換から年月日・時間・ミリ秒操作まで詳細解説
4.C#のバージョンを変更・更新する方法
C#で開発するときはプロジェクトの要件は使用したい要件に応じて適切なバージョンを選択する必要があります。開発環境やチーム開発における一貫性を保つため、プロジェクトごとにC#のバージョンが指定されていることが一般的です。
この章では、C#のバージョンを変更したり更新したりする方法を紹介します。
プロジェクトファイルでのC#バージョン設定
C#のバージョンは、プロジェクトファイル(.csproj)で直接指定できます。
プロジェクトファイルでC#のバージョンを設定する手順は以下のとおりです。
プロジェクトファイルを開く:Visual Studioでプロジェクトを右クリックし、「プロジェクトファイルを編集」を選択します。
言語バージョンを指定する:<LangVersion>タグを追加または編集します。
保存してビルド:ファイルを保存し、プロジェクトを再ビルドすることで変更が反映されます。
例えば、最新バージョンを使用する場合は以下のように記述します。
<PropertyGroup> <LangVersion>latest</LangVersion> </PropertyGroup> |
特定のバージョンを指定する場合は、9.0や10.0など、使用したいバージョン番号を記載してください。
Visual StudioでのC#バージョンアップ手順
Visual Studioを使用してC#の言語バージョンを変更する場合、以下の手順を実行します。
プロジェクトのプロパティを開く:Visual Studioでプロジェクトを右クリックし「プロパティ」を選択します。
ビルドタブを選択:左側のメニューから「ビルド」を選択し、画面下部にある「詳細設定」をクリックします。
言語バージョンを選択:「言語バージョン」のドロップダウンメニューから、使用したいバージョンを選択します。例えば、「最新(latest)」や「C# 10.0」などを選択できます。
変更を保存:「OK」をクリックして設定を保存し、プロジェクトを再ビルドします。
ただし、Visual Studioでは既定のバージョンがプロジェクトのターゲットフレームワークに合わせて調整されているため、UI上でのバージョン変更オプションが無効になることがあります。このときは、前述のプロジェクトファイルを直接編集する必要があります。
また、Visual Studio自体を最新化することで、新しいC#機能のサポートが追加されます。最新機能を利用したい場合は、Visual Studio Installerを使用してIDEを最新バージョンに更新しましょう。
5.C#バージョン別主要機能一覧
C#はバージョンごとに新しい機能が追加され、開発効率やコードの安全性が向上しています。
以下は主要なバージョンとその機能の一覧です。
バージョン | 主な機能 |
---|---|
C# 8.0 | ・非同期ストリーム:IAsyncEnumerable<T>による非同期データ処理 ・null許容参照型:コンパイル時のnullチェック強化 ・デフォルトインターフェース実装:既存インターフェースへの機能追加 |
C# 9.0 | ・レコード型:不変データ構造の簡潔な定義 ・init専用セッター:オブジェクト初期化後の不変性保証 ・トップレベルステートメント:Mainメソッドの記述省略 |
C# 10.0 | ・グローバルusingディレクティブ:プロジェクト全体での名前空間インポート ・ファイルスコープ名前空間:ネストレベルの削減 |
C# 11.0 | ・生文字列リテラル:エスケープ不要な文字列記述 ・required修飾子:必須プロパティの明示的指定 ・ジェネリック属性:型パラメーターを持つ属性の定義 |
C# 12.0 | ・プライマリコンストラクタ:クラスと構造体での簡潔なコンストラクタ記述 ・コレクション式:[1, 2, 3]のような統一された初期化構文 ・ラムダ式の省略可能なパラメータ:ラムダ式のパラメーターにデフォルト値を定義できます。 |
C# 13.0 | ・paramsコレクション:配列以外のコレクション型での可変長引数 ・新しいlock型:より効率的な排他制御 ・新しいエスケープシーケンス(\e):ANSI エスケープ文字の直接記述 |
なお、C#の機能は対応する.NETランタイムの機能に依存しているため、ターゲットフレームワークより新しいC#のバージョンは使用できません。C#のバージョンを更新するときは、ターゲットフレームワークのバージョンにも注意しましょう。
関連記事
C# String Format完全ガイド|0埋め・日付書式・16進数表示・桁数指定の方法を解説
C#演算子完全ガイド:比較・Nullの基礎からオーバーロード・優先順位などの応用まで徹底解説
6.まとめ
C#は定期的にバージョンアップされ、各バージョンで生産性向上や性能改善につながる機能が追加されています。適切なバージョン管理をすることで、開発効率や保守性の向上につながります。
C#のバージョン変更や更新は、プロジェクトファイルの編集やVisual Studioの設定画面を利用することで簡単に行えます。プロジェクトで指定されたバージョンを使用して、開発チーム全体で同じバージョンを使うようにしましょう。
本記事が皆様にとって少しでもお役に立てますと幸いです。
「フリーランスボード」は、数多くのフリーランスエージェントが掲載するITフリーランスエンジニア・ITフリーランス向けの案件・求人を一括検索できるサイトです。
開発環境、職種、単価、稼働形態、稼働日数など様々な条件から、あなたに最適なフリーランス案件・求人を簡単に見つけることができます。
単価アップを目指す方や、自分の得意なスキルを活かせる案件に参画したい方は、ぜひ「フリーランスボード」をご利用ください。
自身に最適なフリーランスエージェントを探したい方はこちらよりご確認いただけます。