9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

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

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

关注

评论

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

什么是极速文件传输,极速文件传输如何进行大文件传输

镭速

Innodb 的RR 是否彻底解决了幻读?

想要飞的猪

innodb 隔离级别 幻读

一文盘点,ZBC的应用场景与通缩场景

西柚子

架构7作业

梁山伯

Smart Finance 热启动创世开启,参与质押瓜分SMART资产

股市老人

dotnet 8 preview 1 即将发布

newbe36524

C# Docker Kubernetes

热启动预示生态起航的Smart Finance,与深度赋能的SMART通证

股市老人

能取代90%人工作的ChatGPT到底牛在哪里

慕枫技术笔记

人工智能 后端 ChatGPT

MQTT协议快速体验

EMQ映云科技

开发 物联网 IoT mqtt 企业号 2 月 PK 榜

2023年1月国产数据库大事记-墨天轮

墨天轮

数据库 opengauss TiDB oceanbase 国产数据库

ChatGPT:“Hello Alluxio,我为你写了一首诗!”

Alluxio

presto 分布式, Alluxio 大数据 开源 ChatGPT

京东前端经典面试题整理

loveX001

JavaScript

日日顺供应链|想要看清供应链发展趋势,先回答这三个问题!

联营汇聚

Smart Finance 热启动创世开启,参与质押瓜分SMART资产

鳄鱼视界

前端培训机构哪家比较适合学习

小谷哥

物联网首选协议,关于MQTT你需要了解这些

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 消息传输

ChatGPT是什么?怎么用?如何提效?怎么赚钱变现?

王中阳Go

深度思考 高效工作 学习方法 AI ChatGPT

某财税集团:使用进步的技术,对业务降本提效

OceanBase 数据库

数据库 oceanbase

BATMAN:将双边注意力用于视频对象分割

Zilliz

计算机视觉

瓴羊Quick BI报表分析工具,专业数据分析人员的“神辅助”

对不起该用户已成仙‖

信息论绪论

timerring

信息论 信息论与编码

Multicoin Capital资本2023展望

股市老人

【Redis故障排查】「连接失败问题排查和解决」带你总体分析和整理Redis的问题故障实战开发指南及方案

码界西柚

redis 故障排查 2月日更 故障排查/诊断

“唤醒”闲物、“童”心共享

最新动态

文盘Rust -- 领域交互模式如何实现

京东科技开发者

rust 逻辑 交互 企业号 2 月 PK 榜 interactcli-rs

2023-02-13:力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号 它们之间以「服务器到服务器」点对点的形式相互连接组成了一个内部集群 其中连接 connections 是

福大大架构师每日一题

算法 rust 福大大

手写一个前端存储工具库

jump-jump

JavaScript typescript 缓存 性能优化 工具库

从输入URL到渲染的完整过程

loveX001

JavaScript

热启动预示生态起航的Smart Finance,与深度赋能的SMART通证

鳄鱼视界

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