写点什么

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

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

关注

评论

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

freecplus框架,Linux平台下C/C++程序员提高开发效率的利器

C语言技术网-码农有道

最新Idea 2020.1 二种方法激活教程

公众号:V5codings

intellij-idea

C语言程序的基本结构

C语言技术网-码农有道

C/C++

打造个人商业模式第一步

一尘观世界

副业赚钱 提升认知 思维方式 商业模式 认识自己

游戏开发通用技术和工具

波波

编程 游戏开发 H5游戏

自助设备系列——上下游

孙苏勇

产品 行业资讯 智能设备

当我们说文本编辑器时,到底在说什么

付济

写作平台 InfoQ markdown

高仿瑞幸小程序 03 创建轮播图

曾伟@喵先森

小程序 微信小程序 大前端 移动

给程序员的错误找个台阶

曲水流觞TechRill

docker安装mysql5.7并挂载目录到本地

桥哥技术之路

Docker

我的工作原则与思考

梁帅

互联网 工作效率 原则

C语言数据类型

C语言技术网-码农有道

我的编程之路-2(首秀)

顿晓

方法 沟通 新项目

ELK 日志收集简易教程

meng

elasticsearch Logstash Kibana ELK Filebeat

快来体验 JetBrains Space EAP 版本

刘培培

DevOps JetBrains Space

5G来临,我们该如何打造自己的家庭数据中心基础篇

ABC实验室

5G 数字资产 家庭数据中心

面对压力的战略和战术

山楂大卷

管理 精神力 逻辑思维 压力 工作思路

使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (二)为什么要写单元测试

编程道与术

编程 编程语言 TDD 代码审查 单元测试

2020年程序猿必读10本好书推荐

ABC实验室

学习 2020 程序员 好书推荐

NumPy 运算规则总结

张利东

Python

有没有什么上古的程序代码至今依然没被更替?

极客时间

编程 程序员 开发

Kafka系列第5篇:一文读懂消费者背后的那点"猫腻"

z小赵

大数据 kafak 实时计算

听保洁老大爷讲Java的垃圾回收

侯树成

JVM

Flutter Andorid真机或打包APK杂症记录

北风烈

flutter 打包APK

从全国首起暗网案件告破说起——暗网,超乎你想象

石君

网络安全 暗网 洋葱网络

我在极客时间学习的三个月

石乐

VSCode最强助攻

页面仔小杨

编程 vscode

告别手写,一键生成 Helm Chart README

郭旭东

Kubernetes Helm

嵌套文件夹复制实现

Howe

Java 文件复制

Grafana+Prometheus(InfluxDB)+Jmeter使用Nginx代理搭建可视化性能测试监控平台

软测小生

Grafana Prometheus Influxdb Jmeter 性能测试

分析Kubernetes技术体系的层级,慎用比较前沿的技术

韩超

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