50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

我为什么不建议大家等公司倒闭之后,再找工作!

非著名程序员

面试 认知提升 招聘管理 8月日更

上游思维:上工治未病

石云升

读书笔记 公司管理 8月日更 上游思维

看完这篇博客,Python Django 你就学会一半了

梦想橡皮擦

8月日更

Vue进阶(三十四): webstorm 应用 git 进行版本管理

No Silver Bullet

git Vue 8月日更

到底啥是区块链分叉?

CECBC

minetest Window编译运行

c++ 开源 游戏 我的世界

大专的我狂刷29天“阿里内部面试笔记”最终直接斩获十七个Offer

Java 程序员 架构 面试 IT

震惊!300多页美团百亿级系统架构设计实录首公开

Java 编程 架构 面试 架构师

一切努力似乎都徒劳?|靠谱点评

无量靠谱

提升个人影响力的简单原则

俞凡

认知

【LeetCode】股票的最大利润Java题解

Albert

算法 LeetCode 8月日更

区块链和比特币到底有什么关系?

CECBC

阿里P8亲传Java面试指南,助我一路过关斩将,成功拿到大厂Offer

Java 编程 面试 程序人生 架构师

DAPP钱包开发模式详细介绍

Geek_23f0c3

dapp 钱包系统开发 DAPP智能合约交易系统开发

七夕特别篇|用Python绘画牛郎织女在鹊桥相见

Python研究者

8月日更

“硬钢字节”阿里大牛分享内部数据结构与算法(诛仙版)源码笔记

Java~~~

Java 架构 面试 算法 数据结构与算法

求天理 存人欲|靠谱点评

无量靠谱

新药研发周期越来越短,北鲲云超算平台如何提高药企竞争力?

北鲲云

GitHub不再支持密码验证解决方案:SSH免密与Token登录配置

zhoulujun

git GitHub SSH Token 免密登录

Python代码阅读(第9篇):返回最长的输入对象

Felix

Python 编程 Code Programing 阅读代码

如何在二三线城市月薪过万(二)面试100人后的经验总结!教你如何做面霸

小鲍侃java

8月日更

【前端 · 面试 】HTTP 总结(十二)—— URL 和 URI

编程三昧

面试 HTTP url 8月日更

细说JavaScript正则表达式(RegExp)

devpoint

正则表达式 regex JavaScrip 8月日更

Java的四种引用类型

W🌥

Java JVM 8月日更

fil矿机价格怎么计算?fil矿机托管费用怎么计算?

fil矿机价格怎么计算 fil矿机托管费用怎么计算

fil挖矿怎么样?fil挖矿收益怎样?

fil挖矿怎么样 fil挖矿收益怎样

区块链技术 | 数字货币的未来发展前景趋势分析

CECBC

Linux从头学:所有编程语言中的栈操作,底层原理都在这里

Java 编程 架构 面试 架构师

JavaScript继承的实现方式:原型语言对象继承对象原理剖析

zhoulujun

JavaScript

fil最新消息!Fil价值与未来如何?

区块链 分布式存储 IPFS fil FIL价值

毕业总结

Johnny

架构实战营

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