写点什么

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

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

关注

评论

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

观测云:以用户为中心的可观测性解决方案

可观测技术

可观测性

哈银消费金融七周年:创新金融服务,助力消费金融行业高质量发展

极客天地

云推流与云串流革新领域:深度解析技术应用场景

点量实时云渲染

智慧城市 3D 数字孪生 实时云渲染 时实渲染

汇洲财富携手AI技术,打造未来金融投资新高地

科技热闻

福昕软件荣获2023中国电子学会科技进步二等奖

新消费日报

Web3 游戏周报(5.12 - 5.18)

Footprint Analytics

链游

Gen AI 连接非结构化数据,Unstructured Data Meetup 第二场官宣杭州!

Zilliz

非结构化数据 Milvus Zilliz AIGC GenAI

实时消息获取技术方案对比

南城FE

前端 后端 实时消息

基于ELF 1S开发板完成的物联网开源

芯动大师

项目 系统 开发板

三能一体运营体系助力政企支撑水平提升

鲸品堂

运营商 政企 企业号 5 月 PK 榜

线程安全使用 HashMap 的四种技巧

不在线第一只蜗牛

安全 线程

华为云CodeArts 12大安全防护机制,端到端全面保障软件供应链安全!

华为云开发者联盟

安全 华为云 华为云开发者联盟 华为云CodeArts 企业号2024年5月PK榜

汇洲财富引领金融科技创新,AI智能投顾服务震撼上线

科技热闻

Kmesh进入CNCF云原生全景图,实现网格治理sidecarless化

华为云开发者联盟

云原生 华为云 华为云开发者联盟 企业号2024年5月PK榜

1688商品评论数据接口:电商数据分析新工具

tbapi

1688API接口 1688商品评论接口

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