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

鉴于非常多的客户要求,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值