C#の正しいバージョン番号は何ですか?何が出たの? C#3.5 に関する回答が見つからないのはなぜですか?
この質問は主に、間違ったバージョン番号を使って答えを探している人を助けるためのものです。 C#3.5 。間違ったバージョン番号で答えを見つけられなかった人は誰でも this の質問を見つけてから正しいバージョン番号で再び検索することを願います。
これらは、この記事の執筆時点で知られている C#のバージョン です。
Dispose
を実装したIEnumerator
sでIDisposable
を呼び出す最初のバージョン。他のいくつかの小さな機能。var
)、クエリ式dynamic
)、デリゲートとインターフェースの一般的な分散、COMサポートの強化、名前付き引数、Tupleデータ型とオプションのパラメータawait
とcatch
のfinally
、コレクション初期化子の拡張Add
メソッド.out
パラメータの宣言 、 ローカル関数 、 バイナリリテラル、数字の区切り文字 、および 任意の非同期戻り値 。unmanaged
ジェネリック型制約 。 ref
再割り当て。安全ではない改善:stackalloc
初期化、ピンで固定されていないfixed
バッファ、カスタムfixed
ステートメント。オーバーロード解決を改善しました。イニシャライザとクエリの式変数タプル用に定義された==
および!=
。自動プロパティのバッキングフィールドは、属性によってターゲット設定できるようになりました。IAsyncEnumerable<T>
のサポート、範囲、およびデフォルトのインタフェースメソッド。C#の正しいバージョン番号は何ですか?何が出たの? C#3.5に関する回答が見つからないのはなぜですか?
C#3.5のようなものはありません - ここでの混乱の原因はC#3.0が.NET 3.5に存在するということです。ただし、言語とフレームワークは独立してバージョン管理されています。CLRは.NET 2.0〜3.5ではバージョン2.0、.NET 4ではCLR 4.0が導入されています。 .NET 4.5のCLRではさまざまな改善が行われていますが、バージョン管理は不明確です。場合によっては、CLR 4.5と呼ばれることもあります(たとえば、 このMSDNページ はそのように参照します)。 Environment.Version
プロパティはまだ4.0.xxxを報告します。
言語、ランタイムおよびフレームワークのバージョン間の関係についてのより詳細な情報は C#in Depth サイトで利用可能です。これには、.NET 2.0をターゲットとするときに使用できるC#3.0のどの機能に関する情報が含まれます。 (もし誰かがこのWikiの答えにすべてのコンテンツを取り入れたいのであれば、彼らは大歓迎です。)
2017年5月3日の時点で、C#言語チームは彼らのgithubリポジトリにC#バージョンと機能の歴史を作成しました: C#言語バージョンで追加された機能 。 次期および最近実装された言語機能を追跡するページ もあります。
C#のバージョン番号を扱うときの最大の問題は、それが.NET Frameworkのバージョンに結び付けられていないという事実です。これは、Visual Studioと.NET Frameworkの間の同期リリースが原因であると思われます。
C#のバージョンは、フレームワークではなく、実際にはコンパイラにバインドされています。たとえば、Visual Studio 2008では、C#3.0を記述し、.NET Framework 2.0、3.0、および3.5をターゲットにすることができます。 C#3.0の命名法は、 ANSI C89、C90、C99 がCのコード構文/機能を説明するのと同じ方法で、コード構文のバージョンとサポートされる機能を説明します。
Mono を見ると、Mono 2.0(主にECMA仕様の.NET Frameworkのバージョン2.0を実装)がC#3.0の構文と機能をサポートしていることがわかります。
これは、ここで最も答えと同じですが、簡単にするためにテーブル化し、それは完全性についてVisual Studioと.NETのバージョンがあります。
╔════════════╦════════════╦══════════════╦═════════════╦══════════════╗
║ C# version ║ VS version ║ .NET version ║ CLR version ║ Release date ║
╠════════════╬════════════╬══════════════╬═════════════╬══════════════╣
║ 1.0 ║ 2002 ║ 1.0 ║ 1.0 ║ Feb 2002 ║
║ 1.2 ║ 2003 ║ 1.1 ║ 1.1 ║ Apr 2003 ║
║ 2.0 ║ 2005 ║ 2.0 ║ 2.0 ║ Nov 2005 ║
║ ║ ║ 3.0 ║ 2.0 ║ Nov 2006 ║
║ 3.0 ║ 2008 ║ 3.5 ║ 2.0 ║ Nov 2007 ║
║ 4.0 ║ 2010 ║ 4.0 ║ 4 ║ Apr 2010 ║
║ 5.0 ║ 2012 ║ 4.5 ║ 4 ║ Aug 2012 ║
║ 5.0 ║ 2013 ║ 4.5.1 ║ 4 ║ Oct 2013 ║
║ ║ ║ 4.5.2 ║ 4 ║ May 2014 ║
║ 6.0 ║ 2015 ║ 4.6 ║ 4 ║ Jul 2015 ║
║ ║ ║ 4.6.1 ║ 4 ║ Nov 2015 ║
║ ║ ║ 4.6.2 ║ 4 ║ Aug 2016 ║
║ 7.0 ║ 2017 ║ ║ ║ Mar 2017 ║
║ ║ ║ 4.7 ║ 4 ║ May 2017 ║
║ 7.1 ║ 2017(v15.3)║ ║ ║ Aug 2017 ║
║ ║ ║ 4.7.1 ║ 4 ║ Oct 2017 ║
║ 7.2 ║ 2017(v15.5)║ ║ ║ Dec 2017 ║
║ ║ ║ 4.7.2 ║ 4 ║ Apr 2018 ║
║ 7.3 ║ 2017(v15.7)║ ║ ║ May 2018 ║
║ 8.0 ║ 2019 ║ ║ ║ Apr 2019 ║
╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝
注意:.NET開発はかなりこれらの日VSとは独立して、それぞれのバージョン間には相関関係がありません。詳細は " .NET Frameworkのバージョンと依存関係 "を参照してください。
C#1.0 Visual Studio.NETあり
C#2.0 Visual Studio 2005あり
C#3.0 Visual Studio 2008の場合
C#4.0 Visual Studio 2010の場合
C#5.0 Visual Studio 2012の場合
C#6.0 Visual Studio 2015あり
C#7.0 Visual Studio 2017付き
_ version ______
言語指定______
Microsoft COMPILER
C# 1.0 / 1.2____
12月2001?/ 2003?___________
1月2002?
C#2.0_______
2005年9月________________
11月2005?
C#3.0_______
2006年5月_____________________
11月2006?
C#4.0_______
2009年3月(ドラフト)______________
4月2010?
C#5.0; 2012年8月に.NET 4.5とともにリリース
C#6.0; .NET 4.6 2015でリリースされました
C#7.0; .NET 4.7 2017でリリースされました
C#のバージョン履歴:
C#は、Microsoftによって開発されたシンプルで強力なオブジェクト指向プログラミング言語です。
C#は2002年の最初のリリースから大きく進化しました。C#は.NET Framework 1.0で導入されました。
次の表は、C#の各バージョンで導入された重要な機能の一覧です。
そしてC#の最新版はC#Versionsで利用可能です。
この表のほとんどのバージョンを要約しました。足りないものは、ASP.NET Coreバージョンだけです。私はまた、ASP.NET MVCのさまざまなバージョンを追加しました。
ASP.NET 5はASP.NET Core 1.0として、ASP.NET MVC 6はASP.NET Core MVC 1.0.0というブランド名に変更されました。この変更は2016年1月頃に発生したと思います。
表にASP.NET 5 RC1のリリース日を含めましたが、正確なリリース日を見つけることができなかったので、ASP.NETコア1.0と他のコアバージョンをまだ含めません。 ASP.NET Coreのリリース日の詳細については、こちらを参照してください。ASP.NET Core 1.0(ASP.NET 5/vNext)のリリース予定はいつですか?
最新のC#バージョンをチェックすることができます ここ
MSDNの記事 "C#2.0の言語とコンパイラの新機能" と " ビジュアルC#2005の新機能 "を比較すると、 "C#major_version.minor_version"はコンパイラのバージョン番号に従って造られました。
.NET 1.1およびVS 2003に対応するC#1.2 があり、 Visual C#.NET 2003 とも呼ばれます。
しかし、マイクロソフトではさらに、マイナーバージョン(ドットの後)の数字を増やすことや、ゼロ以外の数字を使うことをやめました0
。ただし、.NET 3.5に対応するC#は、msdn.Microsoft.comでは "Visual C#2008 Service Pack 1" と命名されています。
2つの並列命名があります。メジャー.NET /コンパイラのバージョン番号付けとVisual Studioの番号付けによるものです。
C#2.0 は、 Visual C#2005 の同義語です。
C#3.0は、次のものに対応しています(または、より正確には、ターゲットとすることができます)。
これらは C#のバージョン この執筆時点で知られています:
Dispose
を実装したIEnumerator
sでIDisposable
を呼び出す最初のバージョン。他のいくつかの小さな機能。var
)、クエリ式
- C#3.5そのようなことはありません。C#3.0は.NET 3.5に存在します。混乱しないようにしてください!!!
dynamic
)、デリゲートとインターフェイスのジェネリック分散、より多くのCOMサポート、名前付き引数、タプルデータ型およびオプションのパラメーターawait
in catch
およびfinally
のディレクティブを使用して、自動的に実装されるプロパティの初期化子、拡張子Add
コレクション初期化子のメソッド。out
パラメーター宣言 、 ローカル関数 、 バイナリリテラル、数字区切り 、および 任意の非同期リターン 。unmanaged
ジェネリック型制約 。 ref
再割り当て。安全でない改善:stackalloc
初期化、固定されていないインデックス付きfixed
バッファー、カスタムfixed
ステートメント。オーバーロード解像度の改善。初期化子とクエリの式変数。 ==
および!=
はタプル用に定義されています。自動プロパティのバッキングフィールドを属性でターゲットにできるようになりました。IAsyncEnumerable<T>
サポート、範囲、およびデフォルトのインターフェイスメソッド。