Dynamic 和 Dynamic Language Runtime(DLR)

.NET 4开始支持动态语言特性,允许类似JavaScript的语言在运行时动态确定类型。这增加了灵活性并解决了COM Interop等问题,但也可能导致运行时错误。动态语言支持通过动态语言运行时(DLR)实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从 .NET 4开始支持动态语言,所谓动态语言就是很类似于javascript那种语言,它在编译时并不检查对象的类型,而是在运行时动态地决定要用什么类型。

这样做的好处当然是灵活 ,也确实可以解决很多问题。典型的情况如COM Interop和DOM操作等等 。 当然,他们的问题就是可能会导致运行时错误

有朋友可能会说,这个与C# 3中的var有什么区别呢?看看下面这个例子就知道了

image

应该说,虽然C# 3提供了var这个关键字,但其实称不上动态语言。因为var不能作为方法的返回值类型。虽然它确实可以在方法内部作为匿名类型声明的方式。

老实说,上面这个例子我们当初可是伤透了脑筋啊。

 

关于dynamic语言的介绍,请参考http://msdn.microsoft.com/en-us/library/dd264736(VS.100).aspx

那么,什么是DLR呢?很显然,既然我们需要支持dynamic这种语言特性,所以当然就需要在Framework中对其进行解析和处理。所谓DLR就是Framework中的一个特殊组件,它就负责这个工作。

它与CLR的关系如下图所示,其实也就是说CLR这个层面是基于静态类型,或者说强类型的; 而DLR则是基于动态类型的处理引擎。

Dynamic Language Runtime Architecture Overview

关于DLR的完整介绍,有兴趣的朋友可以参考http://msdn.microsoft.com/en-us/library/dd233052(VS.100).aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值