把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

C#特性聚焦:可选和命名参数、COM 互操作性

  • 2008-11-19
  • 本文字数:681 字

    阅读完需:约 2 分钟

鉴于非常多的客户要求,Anders 发了下慈悲,允许在 C#中支持可选和命名参数(Optional and Named Parameters)。就像 VB 那样,可选参数通过包含一个默认值来支持。并像 VB 中的那样,必选参数必须先于任何可选参数之前出现。

命名参数也被完全地支持了。这允许开发人员以任何他们习惯的顺序来设定参数值。这个功能对于普通以及可选参数都有效,人们只有在处理可选参数的时候才会希望看到它。

当参数用于解析表达式的时候,顺序严格地由进行调用的代码所确定,而无需遵循函数的签名顺序。虽然这种方式不被推荐,但这意味着使用了这种方式的表达式可以更安全或者不安全地用作参数。

COM 函数库具有一个糟糕的习性,就是使用 Object 作为返回值。为了解决这个问题,C# 4 将自动地把任何由 COM 返回的对象都升级为“动态”类型。正如我们在之前的文章提及的那样,这允许在对象上进行后绑定调用,犹如开发人员手动地编写了所需的反射代码。

“ref”修饰符对于 COM 调用不再需要,除非引用语义确实需要。

最后,这也意味着代码会通常如下所示:

复制代码
//C# 3
var a = (IFoo) obj.Foo(ref missing, ref missing,
ref missing, ref missing,
ref missing, 5, ref missing,
ref missing, ref missing);
var b = (IBar)a.Bar();
var c = b.Value;
//C# 4
dynamic obj = //some COM or DLR object
var c = obj.Foo(clientId := 5).Bar().Value

同时目前还有一个关于参数化属性的流言。一旦得到它更多的信息,我们将发表一篇更新新闻。

查看英文原文: C# Feature Focus: Optional and Named Parameters, COM Interoperability

2008-11-19 02:102499
用户头像

发布了 254 篇内容, 共 70.7 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试/测试开发丨Python常用数据结构-学习笔记

测试人

软件测试 自动化测试 测试开发 python数据结构

使用友好的API设计理念

agnostic

API APi设计

单调队列算法模板及应用

timerring

算法

Git 远程仓库失效

Andy

软件测试/测试开发丨学习笔记之Allure2测试报告

测试人

Python 软件测试 自动化测试 测试开发 Allure

基于容器和Kubernetes的应用无限扩容

俞凡

Kubernetes 最佳实践 云原生

软件测试/测试开发丨Pytest测试用例生命周期管理-Fixture

测试人

软件测试 自动化测试 测试开发 测试用例 pytest

Kafka008——浅谈Broker的存储架构

Codyida

后端

软件测试|Python高手教你玩转 Excel 自动化

霍格沃兹测试开发学社

软件测试|Python神器logging,你真的了解吗?

霍格沃兹测试开发学社

超级独角兽 Databricks 的崛起之路

CnosDB

时序数据库 开源社区 CnosDB Databricks

如何在OpenJ9场景下使用Arthas

骑牛上青山

Java JVM Arthas openj9

软件测试|神操作!用 Python 操作 xmind 绘制思维导图

霍格沃兹测试开发学社

背靠香港影视集团星光文化,StarNFT问世了

鳄鱼视界

软件测试|Python删除列表元素的3种方法,你都会吗?

霍格沃兹测试开发学社

代开病假单|代办病假条|体检报告|诊断证明书

病假条病假单

JavaScript作用域深度剖析:从局部到全局一网打尽

Immerse

MySQL中使用group_concat()函数进行分组排序

源字节1号

开源 软件开发 小程序开发

idea每次打开新的类依次排列

源字节1号

开源 软件开发 小程序开发

C#特性聚焦:可选和命名参数、COM互操作性_.NET_Jonathan Allen_InfoQ精选文章