gpt4 book ai didi

.net - 动态语言运行时和 CLR - DLR 有什么意义?

转载 作者:行者123 更新时间:2023-12-01 12:01:35 24 4
gpt4 key购买 nike

来自维基百科关于 DLR 的条目,

看起来 DLR 的目的是为了使用 Python、Ruby 等语言。这就是 DLR 的全部吗?还有其他好处吗?为什么要为 ASP.net 项目或 Winform 应用程序选择 IronPython 而不是 C#?

最佳答案

CLR 及其底层执行模型针对静态类型语言进行了优化。 .NET 类库中的几乎所有方法都采用比类型系统的根 System.Object 更精确类型化的参数。

动态类型语言在运行时需要一组不同的功能。他们需要高效执行动态类型代码的能力。例如,当动态类型语言调用常规 CLR 类时,它需要将每个参数转换和/或类型转换为 CLR 类上的静态定义类型。如果不仔细执行此操作,效率可能会很低。

同样,动态类型语言通常有一个对象模型,该模型不容易映射到具有显式类型属性、方法、字段等的 CLR 类模型。相反,对象通常更像是哈希表、键值对桶,其中键是字符串(或符号),值是方法、闭包或对象值本身。对象(和/或其类型)通常在运行时也是可扩展的。

由于动态类型语言之间存在相似性,将共性提取到一组基本功能中将很有用,以简化互操作和动态语言实现,并使 CLR 优化更容易特别关注动态语言。 C# 中新的 dynamic 关键字就是其中的一部分:它使用 DLR 的机制来帮助与动态类型语言和对象系统(例如 COM 自动化对象、IronPython、IronRuby 等)进行互操作。

关于.net - 动态语言运行时和 CLR - DLR 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/861629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com