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中定义的架构兼容的框架.

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么