AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

云交易技术对接全景

京东零售技术

云交易

打造两轮差速机器人fishbot:从零开始构建移动机器人

芯动大师

ROS imu joint

京东科技基于 Apache SeaTunnel 探索复杂场景适配

白鲸开源

Clickhouse 数据同步 数据集成 Apache SeaTunnel 京东科技

矩阵起源荣膺"2024AI最佳实践案例"------多模态AI数据智能平台,让您的数据成就您的AI

MatrixOrigin

数据库 AI InfoQ 技术创新 MatrixOrigin

【YashanDB知识库】如何解决共享集群部署遇到报错:YAS-05721 invalid input parameter, reason: node name invalid.

YashanDB

数据库

【YashanDB知识库】如何处理报错"UDT column batch insert" has not been implemented yet

YashanDB

数据库 yashandb

【YashanDB知识库】如何排查YMP报错:”OCI版本为空或OCI的架构和本地系统的架构不符“

YashanDB

数据库 yashandb

【YashanDB知识库】如何限制用户session连接数

YashanDB

数据库 yashandb

【教程】第十一章 子任务 & 工时——化繁为简

NocoBase

开源 项目管理 低代码 教程 任务管理

Taro小程序开发性能优化实践

京东零售技术

taro

京东零售数据可视化平台产品实践与思考

京东零售技术

数据可视化

【2024丨CSIG青年科学家会议 AI可信论坛】视觉内容安全技术的前沿进展与应用

热爱编程的小白白

直击面试!阿里技术官手码12W字面试小册在Github上爆火

Summer

Java 程序员 面试 架构师 大厂

Python 数据类型详解:列表、字典、元组与集合的操作指南

敲代码不忘补水

Python 科技 数据类型 tuple 计算机科学与技术

多推理几步,生成式AI会变得更聪明吗?

JustYan

人工智能 大模型 生成式AI

2024年低代码趋势洞察——企业最看重的功能有哪些

JeeLowCode低代码平台

低代码开发 低代码开发工具 低代码,

“慢”增长时代的企业数据体系建设:超越数据中台

京东零售技术

大数据

最新2025整理Java面试八股文,大厂必备神器

Summer

Java 程序员 面试 架构师 大厂

Python for 和 while 循环:掌握循环控制的基本操作

敲代码不忘补水

Python 科技 while循环 for in 计算机科学与技术

华为云Flexus X实例部署安装HivisionIDPhoto一个轻量级的AI证件照制作算法

平平无奇爱好科技

华为云Flexus X实例部署安装HivisionIDPhoto一个轻量级的AI证件照制作算法

平平无奇爱好科技

【YashanDB知识库】启动数据库时报错:YAS-02059 control file version 0.2.64 is incompatible with YashanDB version 0.2.65

YashanDB

数据库 yashandb

Hume 语音模型 OCTAVE:实现情感语音合成、声音克隆和多角色对话生成;通义开源多模态说话人识别项目 3D-Speaker

声网

【双喜】矩阵起源子公司荣膺“2024上海市高成长百家”第一、 荣获上海市技术创新资金立项资助

MatrixOrigin

AI 技术创新 MatrixOrigin 矩阵起源 GenAI

《计算机组成及汇编语言原理》阅读笔记:p82-p85

codists

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