加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:26:11 所属栏目:百科 来源:网络整理
导读:参见英文答案 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#语言功能,它仍然编译.如果我的项目的目标框架是
参见英文答案 > 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中定义的架构兼容的框架.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读