硬核干货——《中小企业 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:361735
用户头像

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

关注

评论

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

云上稳定性保障神器——腾讯云混沌演练平台登场!

腾讯云混沌演练平台

腾讯云 混沌工程 稳定性建设

百余位顶级投资人齐聚首钢一高炉,第17届DEMO CHINA即将揭幕

创业邦

【Spring大揭秘】系统性能提升!带你解锁系统优化大法

树上有只程序猿

spring

网站如何做好谷歌优化

九凌网络

智能边缘云安全专区简介

天翼云开发者社区

云计算 安全

云电脑:运行原理与自行搭建指南

天翼云开发者社区

云计算 云电脑

华为云全新上线Serverless应用中心,支持一键构建文生图应用

云计算 软件开发 华为云

思辨:移动开发的未来在哪?

小巫debug日记

移动开发

Python 数组和列表:创建、访问、添加和删除数组元素

小万哥

Python 程序员 软件 后端 开发

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

鳄鱼视界

VUE为什么在中国如此流行?

Speedoooo

Vue 跨端框架 小程序容器技术 跨端技术

工业4.0时代下的制造业数字化转型,应如何借由低代码焕发创新力?

优秀

低代码 制造业数字化

ETL实现实时文件监听

谷云科技RestCloud

ETL 数据实时监听 实时数据监听

通达手机每一处,华为智慧搜索让爸妈用机更简单

最新动态

混沌工程理念:起源

腾讯云混沌演练平台

混沌工程 稳定性治理 混沌演练

暨大计算机科学系举办“火焰杯”软件测试开发选拔赛颁奖仪式

测试人

软件测试

一文详解|支付宝小程序跳转(超详细版)

盐焗代码虾

支付宝小程序 支付宝 小程序跳转

秋色宜人适出行,如何提前做好防雨防晒准备?

最新动态

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

石头财经

大模型系列1:大模型是个啥?

BigBang!

大模型

基于低代码平台快速开发应用

互联网工科生

软件开发 低代码 低代码平台 JNPF

九章云极DataCanvas公司入选Forrester AI/ML权威报告

九章云极DataCanvas

广告策划师如何做AB测试

字节跳动数据平台

大数据 A/B测试 对比实验 数字化增长

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

股市老人

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