参见英文答案 >
Does C# 6.0 work for .NET 4.0?3
我有一个专门针对较早版本的.NET框架(.NET 4.5.2)的项目.我安装了Visual Studio 2015(因此我的机器上是.NET 4.6).我注意到,如果我使用.NET 4.6 / C#6中发布的C#语言功能,它仍然编译.如果我的项目的目标框架是< .NET 4.6,不应该这样不能编译:
我有一个专门针对较早版本的.NET框架(.NET 4.5.2)的项目.我安装了Visual Studio 2015(因此我的机器上是.NET 4.6).我注意到,如果我使用.NET 4.6 / C#6中发布的C#语言功能,它仍然编译.如果我的项目的目标框架是< .NET 4.6,不应该这样不能编译:
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 Framework版本和C#语言版本是不同的. C#6语言功能
public string MyAutoProperty { get; } = "1"; nameof(filename)
可以由VS 2015编译成针对早期框架的代码.
How can I ensure I’m only using .NET language features that work with the framework version I’m targeting?
如果您尝试使用.NET 4.6 Framework功能,则如果要定位到早期的框架,则会收到适当的编译器错误.
Would I be able to deploy this code to machine which did not have .NET 4.6?
是的,你会的只要部署机器具有与您在VS2015中定义的架构兼容的框架.