写点什么

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

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

关注

评论

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

复杂场景数据处理的 OLTP 与 OLAP 融合实践

NebulaGraph

数据库 知识图谱

2022年第六届数据质量管理国际峰会重磅开启

数据质量管理智库

数据 数据隐私 数据安全 峰会 数据质量

算法 | 详解斐波那契数列问题

甜点cc

JavaScript 算法 10月月更 斐波那契数列

【网络安全篇】JavaSript基础内容大全

贤鱼很忙

10月月更

C++精通之路:红黑树

雪芙花

c c++ 10月月更

openGemini内核源码正式对外开源

华为云开发者联盟

数据库 物联网 华为云 企业号十月 PK 榜

【kafka运维】Topic的生产和消费运维脚本

石臻臻的杂货铺

kafka kafka运维 10月月更

一种基于柔性事务的分布式事务解决方案设计探究

京东科技开发者

编程 分布式事务 事务 事务回滚 柔性事务

热门探讨:为何数字化转型的企业,大都“死”在了黎明前夕?

优秀

数字化转型

你真的了解v-model吗🔥

渔戈

前端 Vue3 10月月更

升级全新网络方案,给你低成本、高性能的裸金属体验

华为云开发者联盟

云计算 后端 华为云 云服务器 企业号十月 PK 榜

技术分享 | 测试开发工程师必读经典好书清单,抽奖赠书送福利!

霍格沃兹测试开发学社

全彩LED显示屏近年来在中国的发展趋势

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

Vue的开发模式与webpack🔥

渔戈

前端 Vue3 10月月更

Java中的super和this关键字详解

共饮一杯无

Java 10月月更 super和this关键字

记一个“奇葩”需求的实现

甜点cc

JavaScript 前端 Element UI 10月月更

面试官:数据库加了唯一索引,就不会有重复数据了吗???

小小怪下士

Java MySQL 程序员

牛客刷题系列之初阶版(自守数,返回小于 N 的质数个数,第一个只出现一次的字符)

雪芙花

c c++ 10月月更

《Go语言学习路线图》让你少踩坑,高效学,Let’s Go!

王中阳Go

golang 学习方法 技术专题合集 10月月更 “程”风破浪的开发者

vue-router学习-1

Studying_swz

前端 10月月更

牛客刷题系列之进阶版(搜索旋转排序数组,链表内指定区间反转)

雪芙花

c c++ 10月月更

【网络安全篇】--HTML基础(预计学习时间:30分钟)从此以后不迷糊~

贤鱼很忙

html 前端 10月月更

你真的了解过Vue的组件化开发吗🔥

渔戈

前端 Vue3 10月月更

Vue_Webpack详解

Studying_swz

前端 10月月更

基于Ernie-3.0 CAIL2019法研杯要素识别多标签分类任务

汀丶人工智能

nlp

HashMap源码分析(六)

知识浅谈

hashmap 10月月更

校招面试真题 | 显式等待与隐式等待的区别?与强制等待的方式分别是什么,有什么区别?

霍格沃兹测试开发学社

Python列表和元组有什么区别

芥末拌个饭吧

后端 python 3.5+ 10月月更

以指标驱动业务决策,Kyligence 亮相 Gartner IT Symposium/Xpo™ 峰会

Kyligence

数据分析 指标中台 OLAP技术

详解Native Memory Tracking 追踪区域分析

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

【高并发】深度解析ScheduledThreadPoolExecutor类的源代码

冰河

并发编程 多线程 高并发 协程 异步编程

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