web-dev-qa-db-ja.com

C#の正しいバージョン番号は何ですか?

C#の正しいバージョン番号は何ですか?何が出たの? C#3.5 に関する回答が見つからないのはなぜですか?

この質問は主に、間違ったバージョン番号を使って答えを探している人を助けるためのものです。 C#3.5 。間違ったバージョン番号で答えを見つけられなかった人は誰でも this の質問を見つけてから正しいバージョン番号で再び検索することを願います。

2305
Jon Skeet

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

これらは、この記事の執筆時点で知られている C#のバージョン です。

  • C#1.0 .NET 1.0およびVS2002でリリース(2002年1月)
  • C#1.2 (奇妙なことに) .NET 1.1およびVS2003(2003年4月)と共にリリースされました。 Disposeを実装したIEnumeratorsでIDisposableを呼び出す最初のバージョン。他のいくつかの小さな機能。
  • C#2.0 は.NET 2.0とVS2005でリリースされました(2005年11月)。主な新機能:総称、無名メソッド、null許容型、反復子ブロック
  • C#3.0 .NET 3.5およびVS2008でリリースされました(2007年11月)。主な新機能:ラムダ式、拡張メソッド、式ツリー、匿名型、暗黙の型指定(var)、クエリ式
  • C#4.0 は.NET 4およびVS2010でリリースされました(2010年4月)。主な新機能:遅延バインディング(dynamic)、デリゲートとインターフェースの一般的な分散、COMサポートの強化、名前付き引数、Tupleデータ型とオプションのパラメータ
  • C#5.0 .NET 4.5およびVS2012(2012年8月)でリリースされました。 主な機能 :非同期プログラミング、発信者情報属性。重大な変更: ループ変数クロージャ .
  • C#6.0 。NET4.6およびVS2015(2015年7月)でリリースされました。 Roslyn によって実装されています。 Features :自動的に実装されるプロパティの初期化子、静的メンバのインポートのためのディレクティブ、例外フィルタ、要素の初期化子、awaitcatchfinally、コレクション初期化子の拡張Addメソッド.
  • C#7.0 .NET 4.7およびVS2017でリリース(2017年3月)メジャー 新機能タプルref locals and ref returnパターンマッチング (パターンベースのswitch文を含む)、 インラインoutパラメータの宣言ローカル関数バイナリリテラル、数字の区切り文字 、および 任意の非同期戻り値
  • C#7.1 VS2017 v15.3でリリース(2017年8月)新機能: 非同期メインタプルメンバー名推論デフォルト式総称とのパターンマッチング
  • C#7.2 VS2017 v15.5でリリース(2017年11月)新機能: プライベート保護されたアクセス修飾子Span <T>、別名内部ポインタ、別名stackonly structほかのすべて
  • C#7.3 VS2017 v15.7(2018年5月)でリリース。新機能: 列挙型、デリゲートおよびunmanagedジェネリック型制約ref再割り当て。安全ではない改善:stackalloc初期化、ピンで固定されていないfixedバッファ、カスタムfixedステートメント。オーバーロード解決を改善しました。イニシャライザとクエリの式変数タプル用に定義された==および!=。自動プロパティのバッキングフィールドは、属性によってターゲット設定できるようになりました。
  • C#8.0 現在プレビュー中、 ベータ版 はVS2019 v16.0(2019年4月)で利用可能。 期待される新機能null入力不可の参照型IAsyncEnumerable<T>のサポート、範囲、およびデフォルトのインタフェースメソッド。

OPの質問に答えて

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#言語バージョンで追加された機能次期および最近実装された言語機能を追跡するページ もあります。

2663
Jon Skeet

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の構文と機能をサポートしていることがわかります。

281
Bryan Rehbein

これは、ここで最も答えと同じですが、簡単にするためにテーブル化し、それは完全性について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のバージョンと依存関係 "を参照してください。

261
nawfal
  • 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付き

182
iTSrAVIE

_ 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でリリースされました

75
Pramodh

C#のバージョン履歴:

C#は、Microsoftによって開発されたシンプルで強力なオブジェクト指向プログラミング言語です。

C#は2002年の最初のリリースから大きく進化しました。C#は.NET Framework 1.0で導入されました。

次の表は、C#の各バージョンで導入された重要な機能の一覧です。

Enter image description here

そしてC#の最新版はC#Versionsで利用可能です。

51
Milan

この表のほとんどのバージョンを要約しました。足りないものは、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)のリリース予定はいつですか?

Version

46
Mindless

最新のC#バージョンをチェックすることができます ここ C# Versions

43
Israel Ocbina

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#バージョン履歴(改訂):

これらは C#のバージョン この執筆時点で知られています:

  • C#1.0-> .NET 1.0およびVS2002(2002年1月)でリリース
  • C#1.2->(非常に十分); .NET 1.1およびVS2003(2003年4月)でリリースされました。 Disposeを実装したIEnumeratorsでIDisposableを呼び出す最初のバージョン。他のいくつかの小さな機能。
  • C#2.0-> .NET 2.0およびVS2005でリリース(2005年11月)。主要な新機能:ジェネリック、匿名メソッド、null許容型、反復子ブロック
  • C#3.0-> .NET 3.5およびVS2008でリリース(2007年11月)。主な新機能:ラムダ式、拡張メソッド、式ツリー、匿名型、暗黙的な型指定(var)、クエリ式
    • C#3.5そのようなことはありません。C#3.0は.NET 3.5に存在します。混乱しないようにしてください!!!
  • C#4.0-> .NET 4およびVS2010(2010年4月)でリリース。主要な新機能:遅延バインディング(dynamic)、デリゲートとインターフェイスのジェネリック分散、より多くのCOMサポート、名前付き引数、タプルデータ型およびオプションのパラメーター
  • C#5.0-> .NET 4.5およびVS2012でリリース(2012年8月)。 主要な機能 :非同期プログラミング、発信者情報属性。重大な変更: ループ変数の閉鎖
  • C#6.0-> .NET 4.6およびVS2015(2015年7月)でリリース。 Roslyn によって実装されます。 機能 :静的メンバー、例外フィルター、要素初期化子、await in catchおよびfinallyのディレクティブを使用して、自動的に実装されるプロパティの初期化子、拡張子Addコレクション初期化子のメソッド。
  • C#7.0-> .NET 4.7およびVS2017でリリース(2017年3月)メジャー 新機能タプルref localsおよびref returnパターンマッチング (パターンベースのswitchステートメントを含む)、 インラインoutパラメーター宣言ローカル関数バイナリリテラル、数字区切り 、および 任意の非同期リターン
  • C#7.1-> VS2017 v15.3でリリース(2017年8月)新機能: async mainTupleメンバー名の推論デフォルトの式ジェネリックとのパターンマッチング
  • C#7.2-> VS2017 v15.5でリリース(2017年11月)新機能: private protected access modifierSpan <T>、別名内部ポインタ、別名stackonly structその他すべて
  • C#7.3-> VS2017 v15.7(2018年5月)でリリースされました。新機能: 列挙型、デリゲート型、およびunmanagedジェネリック型制約ref再割り当て。安全でない改善:stackalloc初期化、固定されていないインデックス付きfixedバッファー、カスタムfixedステートメント。オーバーロード解像度の改善。初期化子とクエリの式変数。 ==および!=はタプル用に定義されています。自動プロパティのバッキングフィールドを属性でターゲットにできるようになりました。
  • C#8.0->現在プレビュー中、 ベータ版 VS2019 v16.0(2019年4月)で利用可能。 期待される新機能null不可の参照型IAsyncEnumerable<T>サポート、範囲、およびデフォルトのインターフェイスメソッド。
0