“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

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

关注

评论

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

从多个角度分析顺序表和链表区别和特点

C++后台开发

数据结构 算法 链表 linux开发 C++开发

海量数据 x 宝兰德 x openGauss Meetup成功举办,广州用户组正式成立!

openGauss

元年智答|数据洞察功能介绍

元年技术洞察

人工智能 数字化转型 智能

java程序员京东T3岗面试回顾:多线程+数据库+中间件+JVM+spring

钟奕礼

Java 程序员 java面试 java编程

大咖说·图书分享|深入浅出Node.js

大咖说

node.js

偶数层PCB板为何在PCB多层板中“独领风骚”?

华秋PCB

工艺 PCB PCB设计

openGauss的SQL引擎在3.1.0版本中做了哪些优化?

openGauss

租便宜的云服务器能干啥?有什么好处?怎么选择?

行云管家

云计算 服务器 云服务器

极客时间架构训练营模块八作业

李晨

架构

多云时代,如何构建配置管理数据库?

BoCloud博云

《Python编程:从入门到实践》有奖书评活动来啦!

图灵社区

使用 Rainbond 搭建本地开发环境

北京好雨科技有限公司

Kubernetes rainbond

2023跳槽一定不能错过的java面试集——前百度资深架构师整理

钟奕礼

Java 程序员 java面试 java编程

C语言学生管理系统

我是一个茶壶

C语言 学生成绩管理系统 11月月更

openGauss内核荣获中国首个国际CC EAL4+级别认证

openGauss

工信部领导莅临2022南京软博会诚迈科技展区参观指导

科技热闻

openGauss 3.1.0的新型选择率模型大解密

openGauss

国密浏览器是什么?有哪些?有什么特点?

行云管家

国密 国密浏览器

瓴羊Quick BI企业数据分析工具,公司运营实时掌控

巷子

多场景下 3-11 倍性能提升,Apache Doris 1.2 新版本性能揭秘!

SelectDB

数据库 数据分析 Clickhouse Doris 数仓

openGauss —— 智能优化器之基数估计

openGauss

事务

ssun

事务 JAV A 11月月更

如何拆掉跨部门的墙?

PMO实践

项目管理 企业管理 跨部门沟通

Java最常见的230道面试题,临阵磨枪,不快也光!涨薪指日可待

钟奕礼

Java 程序员 java面试 java编程

应用 Serverless 化,让业务开发心无旁骛

Serverless Devs

欢迎航天宏图加入社区

openGauss

(Java开发岗)了解大厂面试基本套路及每一轮的重点

程序知音

Java 后端 java面试 java架构 互联网大厂面试

2022年中国新能源汽车出海市场发展洞察

易观分析

新能源汽车 出海

精彩回顾 | 苏州农商银行新一代云原生信息科技架构体系实践

BoCloud博云

云原生

Go1.20 新版覆盖率方案解读

大卡尔

Go 测试覆盖率 11月月更

面霸是怎样练成的?“2023”带你过关斩将,手撕面试官

钟奕礼

Java 程序员 java面试 java编程

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