c# – 为什么在定位框架的较旧版本时,.NET 4.6特定代码编译?

前端之家收集整理的这篇文章主要介绍了c# – 为什么在定位框架的较旧版本时,.NET 4.6特定代码编译?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > 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,不应该这样不能编译:
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中定义的架构兼容的框架.

猜你在找的C#相关文章