QCon北京|3天沉浸式学习,跳出信息茧房。 了解详情
写点什么

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

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

关注

评论

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

Google I/O 2021 What's new in Android Machine Learning

CatTalk

机器学习 tensorflow android Google

Python代码阅读(第65篇):根据条件应用指定函数

Felix

Python 编程 Code 阅读代码 Python初学者

使用 Litho 改进 News Feed 上的 Android 视频表现

CatTalk

android facebook 性能优化 Feed流 Litho

喜报!Nocalhost 成功加入 CNCF 沙箱

CODING DevOps

Kubernetes DevOps cncf Nocalhost 本地化开发

百度:YOLOX和NanoDet都没我优秀!轻量型实时目标检测模型PP-PicoDet开源

百度开发者中心

目标检测 开源技术

Java开发中常用的消息队列工具 ActiveMQ

编程江湖

Activemq Java 开发

为云而生,云原生数据库TDSQL-C技术突破与演进

腾讯云数据库

tdsql 国产数据库

Linux一学就会之文件的基本管理和XFS文件系统备份恢复

学神来啦

Linux 运维 文件系统 linux云计算 linux基础

很好用的压测工具 - Apache Bench工具

恒生LIGHT云社区

测试 AB AB testing实战

NDPQ(NDP+PQ),定义分布式数据库新方向

华为云开发者联盟

数据库 查询 GaussDB(for MySQL) 近数据处理 NDP

行云管家Proxy特点及其部署要求详细解析

行云管家

数据库 IT运维 行云管家 跳板机

TDSQL演进与突破:把企业级分布式数据库做到极致

腾讯云数据库

tdsql 国产数据库

大数据开发之Hive

@零度

大数据 hive

混合云管理策略是什么?如何又快又好的管理混合云?

行云管家

云计算 混合云 云管理

Rainbond通过插件整合SkyWalking,实现APM即插即用

北京好雨科技有限公司

Kubernetes 云原生 全链路追踪

万字讲解WiFi为何物

华为云开发者联盟

wifi 物联网 无线通信 传输 无线

Java SPI 机制从原理到实战

江璇Up

Java spi JavaSPI

开源应用中心|程序员的崩溃瞬间,太形象了!

Java php 开源 插件

前端开发之JavaScript优化

@零度

JavaScript 大前端

处理可能超时的异步操作

编程江湖

大前端

Google I/O 2021 移动和 Web应用上的设备端机器学习

CatTalk

机器学习 tensorflow android Google

TDSQL | 国产化浪潮下,数据库+云如何跑上核心业务?

腾讯云数据库

tdsql 国产数据库

从社区贡献者到加入核心团队,开源给他带来了这些变化

TDengine

tdengine 时序数据库

技术探究:Apache Pulsar 的事务型事件流

Apache Pulsar

Java 架构 分布式 云原生 Apache Pulsar

一文讲透一致性哈希的原理和实现

万俊峰Kevin

微服务 高并发 哈希算法 go-zero Go 语言

一些常用的hive sql函数

编程江湖

大数据 hive Hive SQL

云原生数据库TDSQL-C关键技术内核解密

腾讯云数据库

tdsql 国产数据库

数据分析从零开始实战,Pandas读取HTML页面+数据处理解析

老表

Python 数据分析 数据处理 11月日更

聊聊 ab 和 jmeter 的并发模型

恒生LIGHT云社区

测试 AB

安全经典JWT算法漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

博文推荐|深入解析 Apache Pulsar 中的事务

Apache Pulsar

大数据 架构 分布式 云原生 Apache Pulsar

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