Why Does .NET 4.6 Specific Code Compile When Targeting Older Versions of the Framework?
本问题已经有最佳答案,请猛点这里访问。
我有一个针对旧版本的.NET框架(.NET 4.5.2)的项目。我安装了Visual Studio 2015(因此在我的计算机上安装了.NET 4.6)。我注意到,如果我使用.NET 4.6/C_6中发布的C语言功能,它仍然可以编译。如果我的项目的目标框架是<.NET 4.6,那么这不应该编译:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public string MyExpressionBodyProperty =>"1"; //auto properties are new in C# 6 public string MyAutoProperty { get; } ="1"; private static void MethodThatUsesNameOf(string filename) { if (filename == null) { //nameof was released in C# 6 throw new ArgumentException("The file does not exist.", nameof(filename)); } } |
我如何才能确保我只使用与我目标的框架版本兼容的.NET语言功能?
.NET框架版本和C语言版本是不同的。C 6语言功能
1 2 |
可以通过vs 2015编译成针对早期框架的代码。
0如果您尝试使用.NET 4.6框架功能,那么如果您以较早的框架为目标,则会得到适当的编译器错误。
Would I be able to deploy this code to machine which did not have .NET 4.6?
是的,你会的。只要部署机器有一个与您在VS2015中的目标兼容的框架。
有C 6功能和.NET 4.6功能。
需要.NET 4.6的功能示例如下:
1 2 3 4 5 6 7 8 | public void Foo(IReadOnlyCollection<string> input) { } public void Main(string[] args) { Foo(new Stack<string>()); } |
在.NET 4.6中,