2017-03-08 4 views
39

C#7を実行するための.NETフレームワークとCLRの最小要件は何ですか?また、C#7をコンパイルするにはVS 2017が必要ですか?C#7 .NET/CLR/Visual Studioのバージョン要件

+1

すべての.NETバージョン4.6.xは問題ありません。 Roslynはオープンソースなので何でも可能です。誰かがあなたのためにそれをやりたければ、VS2017をダウンロードしてください。それは昨日解放された。コミュニティ版は無料です。 –

答えて

74

.NET 4.6以上をターゲットにする必要はありませんが、それは間違っています。タプルを使用するには、System.ValueTuple NuGetパッケージが必要です。 https://www.nuget.org/packages/System.ValueTuple/で、4.5以上をサポートし、実際には4.0以上をサポートしていることがわかります。そしてあなたが夢中になりたいのであれば、あなた自身のSystem.ValueTupleクラスを作成して、そのパッケージがしていることを正確に行うならば、それは.NET 3.5でも動作するでしょう。 「タスクのような」タイプの場合は、NuGetパッケージhttps://www.nuget.org/packages/System.Threading.Tasks.Extensions/も必要です。このパッケージは、.NET 4.5以降のドキュメントにも対応しています。

他のC#7の機能は、.NET 2以上では構文上の砂糖なので動作します。例えば、私はちょうどで次の.NET 2.0を書き、それが正しくスロー:

同様に
static void Main(string[] args) 
    { 
     string test = null; 
     string d = test ?? throw new ApplicationException("test"); 
    } 

を、.NET 2.0で正常に動作しますint.TryParse("123", out int i);

私はすべてのC#7の機能をテストしませんでしたが、一般的にはタプル(および分解のような関連機能)を除いて、.NET 2.0以降で動作するはずです。 。つまり、C#7をコンパイルするにはVS2017が必要です。私はある時点で他のコンパイラがC#7をサポートするが、今日はサポートしないと確信している。

  • バイナリリテラル
  • 桁区切り
  • インラインパラメータを破棄する_を使用しoutパラメータ
  • ローカル機能
  • タイプ:私は.NET 2.0での作業を確認し

    特長ベースのパターンマッチングif (obj is int i)case int i:

  • REFが使用するには
  • 投げ式
  • 式ボディゲッターとセッター
  • 式ボディコンストラクタとファイナライザ
+1

なぜdownvote?私の答えは何が不正ですか? – dman2306

+1

私からアップアップしましたが、新しい非同期機能にはナゲットパッケージが必要ですので、[この回答](http://stackoverflow.com/a/42675652/7122)を読む価値があります。 –

+0

@DavidArnoありがとう、その機能を忘れてしまった。ナゲットパッケージに関する情報も含めて更新しました。残念なことに、C#7では非常に多くのことが考慮されていますが、VS2017のリリースノートが最大の機能追加について言及しているだけで不完全なように見えるため、 – dman2306

1

を返しif (i is var j)

  • に一致if (i is 2)
  • Varのパターンにマッチする定数パターンC#7のフルパワー(Nukeなどは参照しないで)からVS 2017とターゲットフレームワークとして.Net 4.7。

  • 関連する問題