C#7を実行するための最小の.NETフレームワークとCLRバージョンの要件は何ですか?また、C#7をコンパイルするにはVS 2017が必要ですか?
.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");
}
_
同様に、int.TryParse("123", out int i);
は.NET 2.0でも問題なく機能します。
C#7のすべての機能をテストしたわけではありませんが、一般に、Tuples(およびそれらに関連する分解のような機能)を除いて、.NET 2.0以降で機能するはずです。そうは言っても、はい、C#7をコンパイルするにはVS2017が必要です。ある時点で、他のコンパイラがC#7をサポートすると確信していますが、今日はそうではありません。
.NET 2.0での動作を確認した機能:
out
パラメーター_
_を使用してパラメーターを破棄するif (obj is int i)
および_case int i:
_if (i is 2)
if (i is var j)
C#7のフルパワーをそのまま使用するには(NuGetパッケージなどを参照せずに)ターゲットフレームワークとしてVS 2017と.NET 4.7が必要です。