最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

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

关注

评论

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

一键快速切换工具:One Switch 1.29中文版

真大的脸盆

Mac Mac 软件 切换工具 一键切换

Serverless冷启动:如何让函数计算更快更强?

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

硬核!互联网资深大佬手码高并发编程速成笔记(2023版)限时开源

三十而立

Java IT java面试

远程调试为何要亲历现场,也许也可以这样解决

石臻臻的杂货铺

远程调试

目前led显示屏厂家存在的问题

Dylan

制造 行业 LED显示屏

基于 Flink ML 搭建的智能运维算法服务及应用

Apache Flink

大数据 flink 实时计算

局域网IP扫描软件:IP Scanner Pro激活版

真大的脸盆

Mac IP 局域网管理 IP扫描工具 局域网扫描

恶意爬虫?能让恶意爬虫遁于无形的小Tips

宙哈哈

Python html nginx 爬虫

音视频处理MCP:视频添加字幕

百度开发者中心

视频 音视频开发 智能视频

国产数字化升级工具强势来袭,瓴羊Quick BI工具免费试用

对不起该用户已成仙‖

从Spring的AOP看Synchronized锁失效和事务失效的情况

做梦都在改BUG

LeetCode题解:136. 只出现一次的数字,哈希表,JavaScript,详细注释

Lee Chen

JavaScript LeetCode

Flink SQL 在美团实时数仓中的增强与实践

Apache Flink

大数据 flink 实时计算

“阿里味”GitHub上新软件架构设计与业务架构融合手册

做梦都在改BUG

Java 架构 架构设计

阿里工作10年,我总结出了这份1071页Spring全家桶核心笔记

三十而立

6步带你用Spring Boot开发出商城高并发秒杀系统

华为云开发者联盟

高并发 开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

Reactor线程模型的演进和局部无锁化

做梦都在改BUG

Apache Paimon 在同程旅行的探索实践

Apache Flink

大数据 flink 实时计算

2023Java岗面试,进互联网大厂必备Java面试八股文真题解析

程序知音

Java java面试 后端技术 八股文 Java面试八股文

系统天气再现bug 网友:墨迹天气赶紧上!

Geek_2d6073

2023 年金三银四最新版 Java 面试八股文教程,涵盖 25 大专题:Java 基础 +spring 全家桶 + 大数据 + 网络 + 设计模式 + 算法

三十而立

2023年成都.NET线下技术沙龙来了!大咖分享,报名从速

MASA技术团队

.net dapr MASA

从零学习SDK(2)SDK的基本概念和组成部分

MobTech袤博科技

从逻辑到硬件:如何转换PCB布局?

华秋PCB

工具 电路 PCB PCB布局 PCB设计

深度学习基础入门篇[二]:机器学习常用评估指标:AUC、mAP、IS、FID、Perplexity、BLEU、ROUGE等详解 1.基础指

汀丶人工智能

人工智能 机器学习 深度学习 算法评价指标

深入探索Go语言的unsafe包,揭秘它的黑科技和应用场景!

王中阳Go

golang 高效工作 面试题 黑科技 Go 语言

新浪顶级架构师保驾护航!国内首本大型分布式架构笔记浴火新生

做梦都在改BUG

Java 架构 分布式

物联网核心套件IoTCore:设备状态数据存储到时序数据库TSDB

百度开发者中心

物联网

一文快速了解火山引擎A/B测试平台

字节跳动数据平台

大数据 AB testing实战 A/B 测试 企业号 4 月 PK 榜

【干货】验证码的常见类型总结

宙哈哈

php html 验证码 短信验证码

JetBrains CLion 2023中文版安装教程CLion 2023新功能

魔仙苹果mac堡

C/C++ CLion 2023 JetBrains CLion破解版

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