C# 7 を実行するための .NET Framework および CLR バージョンの最小要件は何ですか? また、C# 7 をコンパイルするには VS 2017 が必要ですか?
ベストアンサー1
.NET 4.6以上をターゲットにする必要はありません。これは間違いです。タプルを使用するには、System.ValueTuple NuGetパッケージが必要です。その通りです。詳しくはこちら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");
}
同様に、int.TryParse("123", out int i);
.NET 2.0 でも問題なく動作します。
C#7 のすべての機能をテストしたわけではありませんが、一般的に、タプル (および分解などの関連機能) を除いて、そのほとんどは単なる構文糖なので、.NET 2.0 以降で動作するはずです。そうは言っても、C#7 をコンパイルするには VS2017 が必要です。他のコンパイラーがいつか C#7 をサポートするようになることは間違いありませんが、現時点ではそうではありません。
.NET 2.0 で動作することが確認された機能:
- バイナリリテラル
- 桁区切り
- インライン
out
パラメータ _
パラメータを破棄するために使用- ローカル関数
- 型ベースのパターンマッチング
if (obj is int i)
とcase int i:
- 定数パターンマッチング
if (i is 2)
- Varパターンマッチング
if (i is var j)
- 参照リターン
- スロー式
- 式本体のゲッターとセッター
- 式本体のコンストラクタとファイナライザ