写点什么

C#特性聚焦:动态类型化对象、Duck 类型和多重分配

  • 2008-11-18
  • 本文字数:597 字

    阅读完需:约 2 分钟

在我们要深入研究第一个 C#特性之前,有必要知道微软许诺,任何在 C#中有的功能在 VB 中也会具通过某种形式来提供,反之亦然。不过他们没有必要以同样的方式来提供这些功能,语言之间还是希望继续有所区别。

随着动态语言和 DLR 日益增加的重要性,C#也需要能处理动态类型化的对象(Dynamically Typed Objects)。目前,通过对静态类进行反射,虽然能够实现后期调用,但这种方式却需要大量的代码。此外,对 DLR 对象的调用需要一个完全不同的,使用 了 DLR 反射函数的调用方式。

在 C#中,你可以简单地声明对象的静态类型为“dynamic”。就像 VB 的 Option Explicit Off 选项一样,它告诉编译器忽略必要的代码来解析运行时调用的方法绑定。在 IL 层面,被声明为 dynamic 的变量是一个 System.Object 类 型,附加了一个额外标签来标明它使用动态调用语义。

在运行时,所有普通重载解析规则都是基于对象的运行时类型执行的。这意味着,你能够直接地执行多重分配,而不用借助反射或访问者模式。

每个动态语言都具有它们自己的成员查找规则。为了支持这个功能,对象需要实现 IDynamicObject 接口。如果这个接口存在于运行时对象上,那么对象就能处理它自己的成员查找过程。在示范中,Ander 演示了如何在 C#中定义一个动态对象。

当然,这就意味着你可以在 C#中的任何地方使用 duck 类型。

查看英文原文: C# Feature Focus: Dynamically Typed Objects, Duck Typing, and Multiple Dispatch

2008-11-18 06:361809
用户头像

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

关注

评论

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

云效AppStack--扫雷亲测

六月的雨在InfoQ

云效 AppStack 云效流水线 Flow 三周年连更

华为云等保方案,为企业上云保驾护航

科技说

克隆远端项目,idea 自动生成了一个.idea 文件夹,怎么办?

bug菌

git IDEA .gitignore 三周年连更

跨平台应用开发进阶(四十四)一文走近应用层抓包工具:Charles

No Silver Bullet

应用层 抓包分析 抓包工具 三周年连更

Vue3 watch 与 watchEffect

程序员海军

Vue Vue 3 watch 三周年连更

Exception和Error有什么区别吗 | 社区征文

共饮一杯无

Java Exception Error 三周年连更

MySQL数据文件被误删,如何进行恢复?

架构精进之路

MySQL 数据库 三周年连更

助力企业网络安全建设,华为云等保合规解决方案值得拥有

路过的憨憨

Go 也能实现 “继承”?

陈明勇

Go golang 继承 三周年连更

机器视觉公司,在玩一局玩不起的游戏

脑极体

CV

华为云等保方案,轻松满足企业等保合规要求

IT科技苏辞

更专业、安全的过等保,华为云等保合规解决方案值得选择

IT科技苏辞

Meetup 直播预告|助力企业数字化转型,8 大微服务&容器开源实践亮点抢先看

阿里巴巴云原生

阿里云 开源 容器 微服务 云原生

连Hibernate技术都不清楚,你敢说你自己会ORM框架?

浅羽技术

Java hibernate 框架 ORM框架 三周年连更

布隆过滤器的设计之美,后端程序员一定要好好体会

程序员小毕

程序员 数据结构 面试 后端 布隆过滤器

跨平台应用开发进阶(四十五)uni-app集成企微客服实战

No Silver Bullet

uni-app 项目实战 三周年连更

新技术加持下前端开发工程师的未来在哪里?| 社区征文

No Silver Bullet

前端开发 新技术 三周年征文

华为云等保合规方案,助力企业最快30天过等保

科技说

华为云等保合规解决方案,助力企业高效过等保

秃头也爱科技

如何利用人工智能的语言模型创造价值和收益

派大星

ChatGPT

【体验有奖】 玩转 AIGC,Serverless 一键部署 AI 图像生成服务

阿里巴巴云原生

阿里云 Serverless 云原生

2023移动云大会重磅官宣,云改“新三年”强势开局引期待?

ToB行业头条

在华为云构建多云跨云的容灾系统,真的很香

路过的憨憨

华为云等保合规解决方案,助力企业轻松、省心、安全“上云”

秃头也爱科技

Spider实战系列-爬取鬼吹灯小说

浅辄

案例分享 三周年连更

【Linux】之【网络】相关的命令及解析[ethtool、nload、nethogs、iftop、iptraf、ifstat]

A-刘晨阳

Linux 网络 三周年连更

基于 RocketMQ Connect 构建数据流转处理平台

阿里巴巴云原生

阿里云 RocketMQ 云原生

聊聊JavaScript和Scala的表达式 Expression

汪子熙

JavaScript scala 三周年连更

C#特性聚焦:动态类型化对象、Duck类型和多重分配_.NET_Jonathan Allen_InfoQ精选文章