写点什么

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:101881
用户头像

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

关注

评论

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

即构低延迟直播产品L3,打造更优质的实时互动体验

ZEGO即构

架构师训练营第六周作业

Geek_xq

太平金科助力“开局之战”顺利启动,博睿数据“A+N”一体化解决方案全力护航

博睿数据

APM npm AIOPS

架构师训练营 1 期第 10 周:模块分解 - 作业

灵霄

极客大学架构师训练营

Devil Fruit恶魔果实APP系统软件开发

系统开发

智慧警务平台搭建,大数据时代下的警务模式

t13823115967

大数据

AI技术在音视频领域的发展

anyRTC开发者

人工智能 ios android AI WebRTC

数字资产钱包系统开发及介绍

【Java并发编程】阿里最喜欢问的几道线程池的面试题?

java金融

Java 面试 线程池

架构师训练营 1 期第 11 周:安全稳定 - 作业

灵霄

极客大学架构师训练营

生产环境全链路压测建设历程 22:FAQ 1&2

数列科技杨德华

全链路压测 七日更

也谈“中年焦虑”

程序员架构进阶

方法论 职业规划 中年危机

架构师训练营 1 期第 8 周:性能优化(二)- 作业

灵霄

极客大学架构师训练营

架构师训练营 1 期第 12 周:数据应用(一) - 作业

灵霄

极客大学架构师训练营

智慧公安情报研判大数据系统分析平台搭建

t13823115967

智慧公安

架构师训练营第六周总结

Geek_xq

网易有道 iOS二面经验分享

iOSer

ios 面试 网易

咨询师的诱惑

escray

程序员 面试 面经

架构师训练营第五周”技术选型一“总结

随秋

极客大学架构师训练营

【Java并发编程】面试必备之线程池

java金融

线程池

一代版本一代神:利用Docker在Win10系统极速体验Django3.1真实异步(Async)任务

刘悦的技术博客

django python3.x 异步 异步任务

京东将上线社区团购“京喜拼拼”:社区团购是否是一次泡沫大战

石头IT视角

面试官:我问的是Java内存模型,你回答堆栈方法区干嘛?

Java鱼仔

Java 程序员 JMM 多线程 并发

架构师训练营 1 期第 13 周:数据应用(二) - 作业

灵霄

极客大学架构师训练营

互联网寒冬下,程序员如何化解危机?答案全在这份阿里Java知识地图里

比伯

Java 编程 程序员 面试 计算机

像用户一样测试:不妨犯傻

QualityFocus

软件测试 体验 可用性 用户体验

IDEA插件:多线程文件下载插件开发

Silently9527

Java 多线程 idea插件 文件传输

博睿数据支持腾讯云函数监控,Serverless时代已来临

博睿数据

Serverless APM 监控

LeetCode题解:剑指 Offer 40. 最小的k个数,二叉堆,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构师训练营 1 期第 9 周:性能优化(三)

灵霄

极客大学架构师训练营

简明设计模式—创建型

2970

设计模式 Go 语言

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