zoukankan      html  css  js  c++  java
  • C#4.0,支持动态语言?

        无意中网上看到介绍未来C#的文章:http://blogs.msdn.com/charlie/archive/2008/01/25/future-focus.aspx


        文章的大体意思就是,C#未来的发展方向肯定是面向对动态语言的支持这个方向了,也可以肯定的是C#将加入更多的动态语言的特性,这一点还是很值得期待的,文章中指出未来的C#将支持“dynamic lookup“的动态特性。

        目前透露的语法形式是这样:

        static void Main(string[] args)
        {
            dynamic
            {
                object myDynamicObject = GetDynamicObject();
                myDynamicObject.SomeMethod();         // call a method
                myDynamicObject.someString = "value"; // Set a field
                myDynamicObject[0] = 25;              // Access an indexer
            }
        }

        使用关键词“dynamic”,将想使用“dynamic lookup“动态特性的区域告知编译器,编译器将不在编译的时候检查“myDynamicObject”是否有下面的域或者方法,而是在运行时由DLR尝试强行调用这些东西,出错了再抛出异常。个人的理解就是,虽然支持所谓的“dynamic lookup”,但本质上还是需要全部编译为IL代码再运行的,本质上还是静态的,使用关键词“dynamic”的目的就是告诉编译器这里面不要做编译检查,让它通过,然后通过调用DLR部分功能,实现这种“dynamic lookup”的特性。

        文章还列举了采用“dynamic lookup“动态特性好处的三种场景:一个就是与COM组件的互操作上(这点我没大看懂,达人解释一下),一个就是可以更方便地调用IronPython or IronRuby的类,最后就是能更方便地使用反射创建实例和调用方法。

  • 相关阅读:
    2017.4.11下午学习内容
    2017.4.11上午学习内容
    2017.4.10下午学习内容
    2017.4.7下午学习内容
    2017.4.7号学习内容
    2017.4.6下午学习报告
    2017.4.6上午学习报告
    2017.3.31下午学习报告
    2017.3.31上午学习报告
    tornado的使用-日志篇
  • 原文地址:https://www.cnblogs.com/WYB/p/1238344.html
Copyright © 2011-2022 走看看