运行C#7的最低.NET框架和CLR版本要求是什么?另外,我需要VS 2017来编译C#7吗?
您不需要以.NET 4.6及更高版本为目标,这是不正确的。要使用Tuples,您需要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的功能,但总的来说,除了元组(以及它们的相关功能,如解构),它应该在.NET 2.0及更高版本中工作,因为它大部分只是语法糖。话虽这么说,是的,你需要VS2017来编译C#7。我肯定在某些时候其他编译器会支持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作为目标框架。