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

C#CLR /编译问题

发布时间:2020-12-16 09:35:30 所属栏目:百科 来源:网络整理
导读:我昨天发布了一个 this问题,询问有关将.NET应用程序部署到.NET 3.5目标服务器的C#4客户端,以及客户端上编译某些内容或C#4的服务器上的C#3天气. 那个场景是可选参数.我知道自.NET 1.1以来一直支持可选参数.为什么C#3编译的IL代码无法使用可选参数调用C#4编译
我昨天发布了一个 this问题,询问有关将.NET应用程序部署到.NET 3.5目标服务器的C#4客户端,以及客户端上编译某些内容或C#4的服务器上的C#3天气.

那个场景是可选参数.我知道自.NET 1.1以来一直支持可选参数.为什么C#3编译的IL代码无法使用可选参数调用C#4编译的IL代码?

C#3是否只是忽略了可选属性?

解决方法

你是对的…… IL只是用OptionalAttributes装饰,但它是调用编译器决定做什么…

来自里希特:

Now,when a compiler sees that you have code calling a method that is missing some arguments,the compiler can ensure that you’ve omitted optional argumements,grab their default values out of metadata,and embed them…

所以这是CALLING编译器决定做什么与选项,而不是被称为c#4.0 IL …

更多关于边缘情况以及如何决定值的调用方法可以从Lippert,@ http://blogs.msdn.com/b/ericlippert/archive/2011/05/16/optional-argument-corner-cases-part-three.aspx中找到

(编辑:李大同)

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

    推荐文章
      热点阅读