写点什么

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

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

关注

评论

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

使用 SAP Cloud Application Programming 编程模型开发一个图书管理 OData 服务

汪子熙

云原生 CAP SAP 企业级应用 11月月更

[力扣] 剑指 Offer 第二天 - 从尾到头打印链表

陈明勇

Go 数据结构与算法 力扣 11月月更

华为云开发者日震撼来袭!11月20日,上海见!

华为云开发者联盟

开发者 华为云

制造业行业现状及智能生产管理系统一体化解决方案

优秀

制造业 生产管理系统

SREWorks v1.3 版本发布 | 插件机制发布

阿里云大数据AI技术

大数据 运维 插件

软件测试 | 测试人员必须掌握的测试用例

测试人

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

web技术分享| 日期选择限制组件二次封装

anyRTC开发者

Vue 前端 Web Element

技术分享 | 测试人员必须掌握的测试用例

霍格沃兹测试开发学社

全国首个AIGC创作大赛开赛,创作者可靠“AI打工人”躺赚

科技热闻

RxJS 全面解析

PingCode研发中心

响应式编程 RXJS reactivex

RxJS 全面解析

阿杰

JavaScript 响应式编程 RXJS

PLC与SCADA的什么区别和联系

2D3D前端可视化开发

物联网 PLC 工业控制 web组态 SCADA

实时云渲染vs本地渲染,哪个更好用?

Finovy Cloud

云渲染 实时云渲染

直播预告|OceanBase 社区版 4.0 全解析

OceanBase 数据库

Docker——denied: requested access to the resource is denied问题以及解决方法

A-刘晨阳

Docker Linux 运维 11月月更

Kotlin函数声明与闭包

子不语Any

android kotlin 11月月更

Docker发布/上传镜像到dockerhub&&下载/拉取镜像&&删除dockerhub镜像

A-刘晨阳

Docker Linux 运维 11月月更

OKR之剑·实战篇03:OKR的跟踪需要有“自己”的节奏

vivo互联网技术

团队管理 OKR 目标管理

OceanBase 首席科学家阳振坤博士入选2022 年度“CCF王选奖”

OceanBase 数据库

带你了解S12直播中的“黑科技”

华为云开发者联盟

云计算 后端 音视频 华为云 实时直播

阿里云产品经理刘宇:Serverless 的前世今生

云布道师

阿里云 Serverless 云原生

比DataX快20%!SeaTunnel同步计算引擎性能测试全新发布

Apache SeaTunnel

spark DataX Seatunnel 数据集成平台 数据引擎

docker修改容器的端口、容器名、映射地址......

A-刘晨阳

Docker Linux 运维 11月月更

自制操作系统日记(7):字符串显示

操作系统

微服务熔断限流的一些使用场景

Java永远的神

Java 程序员 微服务 程序人生 架构师

[力扣] 剑指 Offer 第二天 - 反转链表

陈明勇

Go 数据结构与算法 力扣 11月月更

2023年语言和框架我们值得关注什么?

阿里巴巴终端技术

框架 语言 & 开发

python小知识-python时间操作

AIWeker

Python python小知识 11月月更

使用SQL加密函数实现数据列的加解密

华为云开发者联盟

大数据 后端 华为云 数据加密

最佳实践 | 用腾讯云AI人像变换给自己一次“跨越年龄的体验”

牵着蜗牛去散步

人工智能 腾讯云 腾讯 腾讯云AI

Dive into TensorFlow系列(2)- 解析TF核心抽象op算子

京东科技开发者

tensorflow TF2 Tensor Op

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