代码之家  ›  专栏  ›  技术社区  ›  Jack

动态语言运行时和clr—dlr的意义是什么?

  •  3
  • Jack  · 技术社区  · 17 年前

    从维基百科的条目 DLR ,

    看起来DLR的目的是使用诸如python、ruby等语言。这都是为了DLR吗?还有其他的好处吗?为什么要选择Ironpython而不是C_来表示ASP.NET项目或WinForm应用程序?

    5 回复  |  直到 17 年前
        1
  •  3
  •   Barry Kelly    17 年前

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

    动态类型语言在运行时需要一组不同的功能。他们需要能够高效地执行动态类型代码。例如,当动态类型语言调用常规的clr类时,它需要将每个参数转换和/或类型化为clr类上静态定义的类型。如果不小心做的话,效率可能会很低。

    类似地,动态类型语言通常有一个对象模型,它不容易用显式类型的属性、方法、字段等映射到clr类模型。相反,对象更像哈希表、键-值对的存储桶,其中键是字符串(或符号),值是方法、闭包或对象值themse。LVES。对象(和/或其类型)通常也可以在运行时扩展。

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

        2
  •  1
  •   sipsorcery    17 年前

    DLR是非常强大和有用的。例如,使用DLR,您可以在用C_编写的应用程序中执行任意Ruby或Python脚本。有很多其他的使用场景,但是动态脚本托管迄今为止对我来说是最有用的。

        3
  •  1
  •   onedozenbagels    17 年前

    它为开发人员提供了更多的选项和使用.NET CLR及其所有功能的灵活性。您可以使用您最熟悉的语言,或者最适合手头任务的语言,无论是C、F、Ruby还是其他什么语言。

        4
  •  0
  •   Jonathan Allen    17 年前

    你对写作感到厌烦吗

    string firstName = (string)Session["FirstName"];
    

    使用DLR,您可以简单地编写

    dynamic firstName = Session.FirstName;
    
        5
  •  0
  •   Ali Shafai    17 年前

    新的C将使用DLR中的一些功能。新构造和语言元素正在通信…

    推荐文章