QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

DDD-14-工厂设计

南山

领域驱动设计 DDD

从构思到上线:深入解析海外1v1视频聊天应用核心功能与技术开发指南

山东布谷科技胡月

一对一视频聊天系统 海外直播 国际版社交APP 社交APP源码 聊天APP源码

云知声多模态模型:实时多模态输入输出;独立于 Siri ,苹果或开发新 AI 用于机器人丨 RTE 开发者日报

声网

DDD-15-数据库设计

南山

领域驱动设计 DDD 数据库设计

打造敏捷开发环境:JNPF低代码平台的实践与探索

不在线第一只蜗牛

敏捷开发 低代码

低代码开发的未来:JNPF如何改变应用构建方式

快乐非自愿限量之名

低代码 数字化

聚合博客网址导航大全代码分享

博客趣

个人博客 博客导航 博客大全 博客趣

腾讯云入选Gartner®首份AI代码助手魔力象限报告

Geek_2d6073

Python并发编程:多线程(threading模块)

我再BUG界嘎嘎乱杀

Python 编程 并发编程 后端 多线程

DDD-11-领域服务

南山

领域驱动设计 DDD 领域服务

如何使用 NFTScan NFT API 在 Gravity 网络上开发 Web3 应用

NFT Research

NFT\ NFTScan API】

JNPF低代码开发平台:企业数字化转型的加速器

EquatorCoco

低代码 数字化 低代码开发 数字转型

元宇宙游戏链游系统开发丨元宇宙游戏链游系统源码案例开发

V\TG【ch3nguang】

有声书音频软件平台开发:多元化商业化收入模式解析

软件开发-梦幻运营部

Spring中的动态表达式SpEL

SpEL表达式 SpEL @Value

DDD-12-领域事件

南山

领域驱动设计 DDD 领域事件

豆包大模型全面落地行业,助力企业打造专属智能体

Geek_2d6073

建筑行业项目管理新宠,10款软件助你轻松驾驭

爱吃小舅的鱼

项目管理 建筑行业

超级自动化:流程资产开启企业数字化转型新纪元

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能

活动回顾丨云原生开源开发者沙龙上海站回放 & PPT 下载

阿里巴巴云原生

阿里云 开源 云原生

Steam全球服务器遭遇大规模DDoS攻击,崩溃细节曝光!!!

网络安全服务

服务器 DDoS steam DDoS 攻击 黑神话悟空

如何快速分析新代币:15 分钟内做出明智的交易决策

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

AI 驱动的产品全生命周期:从概念设计阶段到生命周期的全面管理

Altair RapidMiner

人工智能 AI 数据分析 仿真 智能制造

DDD-17-CQRS

南山

领域驱动设计 DDD CQRS

加密游戏的未来:Telegram机器人如何彻底改变加密挖矿

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

十种超赞的 MyBatis 写法!

秃头小帅oi

探究Python中的函数与模块

我再BUG界嘎嘎乱杀

Python 编程 后端 函数 开发语言

DDD-13-仓储设计

南山

领域驱动设计 DDD 仓储 资源库

5 大场景上手通义灵码企业知识库 RAG

阿里巴巴云原生

阿里云 云原生 通义灵码

5 大场景上手通义灵码企业知识库 RAG

阿里云云效

阿里云 云原生 通义灵码

解锁豆包MarsCode奥秘,打造你的专属创意工坊!|动手实验室新一期又来啦

豆包MarsCode

人工智能 编程 程序员 AI 计算机

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