写点什么

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

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

关注

评论

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

如何选择开发计划进度系统?十款热门产品全评测

爱吃小舅的鱼

项目管理 项目管理软件 开发计划管理 开发计划进度系统

适用于部门管理的项目计划管理工具有哪些?9款高效工具解析

爱吃小舅的鱼

项目计划管理工具

从理论到实践:ByConity在ELT中的实施与效果

Sunny_媛

ByConity

Nuke 15.0v2激活版 for mac安装教程 nuke电影特效合成软件

Rose

数据库系列:主从延时优化

不在线第一只蜗牛

数据库

录屏神器camtasia 功能介绍,camtasia中文版免费下载

阿拉灯神丁

屏幕录制 录屏软件 视频编辑工具 Camtasia Studio2024 AI 视频处理

Smooze Pro for Mac 鼠标增强工具专业版 v2.1.20激活版

Rose

Topaz Sharpen AI for mac破解版 图像清晰度增强软件

Rose

NFT开发音乐版权系统的技术框架

北京木奇移动技术有限公司

数字版权保护 软件外包公司 NFT技术

“管理者应该是‘造钟者’,不应是报时人”

虚实的星空

日常思考

区块链NFT智能合约的技术难点

北京木奇移动技术有限公司

智能合约开发 软件外包公司 NFT技术

初学者浅析C++类与对象

快乐非自愿限量之名

c++

项目管理专家如何磨练自己的管理能力?

爱吃小舅的鱼

风险识别 项目管理软件 项目规划 团队沟通

新技术发展背景下的业务连续性保障新思路

agnostic

资金安全 稳定性保障 技术风险 线上演练

项目管理中的安全文化:建立与维护指南

爱吃小舅的鱼

项目管理软件 项目安全管理 安全审核

NFT开发数字版权系统的注意事项

北京木奇移动技术有限公司

区块链数字藏品 区块链数字版权交易 软件外包公司 NFT技术

开发体育直播足球篮球APP网站,需要准备资料

软件开发-梦幻运营部

NFT技术开发音乐版权系统的技术原理

北京木奇移动技术有限公司

区块链数字版权交易 软件外包公司 NFT技术

中文版iWall for Mac(最好用的动态桌面壁纸软件)附壁纸资源

Rose

LED电子显示屏与LED背光显示屏区别

Dylan

技术 场景 LED显示屏 全彩LED显示屏 led显示屏厂家

mac音频传输工具 Loopback v2.3.2免激活版 下载安装 支持M1/M2/M3

Rose

迪士尼视频怎么下载?DispCam DisneyPlus Video Downloader迪士尼视频下载工具

Rose

如何保障研发项目进度

爱吃小舅的鱼

项目进度

一个项目的项目进度与安排应该怎么构建

爱吃小舅的鱼

项目进度

Mac FoneLab iOS Unlocker:iOS用户的救星,解决锁屏难题!

Rose

Capture One 23 Pro:专业摄影师的首选,卓越品质,轻松呈现!

Rose

Bitmap 和 布隆过滤器傻傻分不清?你这不应该啊

EquatorCoco

算法

功能强大的 MongoDB 客户端工具 NoSQLBooster for MongoDB for Mac 无限试用版

Rose

你为什么不应该过度关注go语言的逃逸分析

不在线第一只蜗牛

Go 后端 开发语言

camtasia属于什么软件,camtasia具有的功能有哪些?

阿拉灯神丁

录屏采集 录屏软件 AI剪辑 视频编辑工具 Camtasia Studio2024

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