中间语言MicroSoft Intermediate Language(MSIL)

MS中间语言在.Net Framework中有非常重要的作用,面向.Net的所有语言逻辑上都必须支持IL。

IL的主要特征

  • 面向对象和使用接口
    首先面向IL的语言必须是面向对象的(C#,VB.NET,C++),带有类的单一继承(Object),另外IL还引入了接口概念,通过它们IL实现了语言的互操作特性,语言的互操作的真正含义是用一种语言编写的类应该能与另一种语言编写的类通信特别是:
    a.用一种语言编写的类能继承用另一种语言编写的类
    b.一个类能包含另一个类的实例,而不管是用哪种语言编写的
    c.一个对象能直接调用用其它语言编写的另一个对象的方法
    d.对象(或对象的引用)能在方法之间传递
    d.在不同语言之间调用方法时,应能在调试器中调试这些方法的调用,即调试不同语言编写的源代码
  • 值类型和引用类型的巨大差别
    IL存储数据的规范是,引用类型的实例总是存储在一个名为“托管堆”的内存区域中,值类型一般存储在堆栈中(但如果值类型在引用类型中声明为字段,它们就内联存储在堆中)
  • 强数据类型
    中间语言的一个重要方面是强数据类型,所有变量都清晰的表明属于某个特定的数据类型,中间语言不允许对模糊的数据类型做任何操作。
    有些语言如(VB.NET)在类型化方面的要求比较宽松,但是编译器会在后台确保在生成IL上强制类型安全。即类型安全检查,尽管这样会降低性能,但我们从类型安全所提供的服务中获得的好处更多,这些服务包括。
    a.语言的互操作性(这个应该比较容易理解,参数,返回值都有确定的类型自然方便互操作)
    b.垃圾收集(只要存在对象的引用,就可获取对像的类型的信息,因为每个对象都是由确定类型的)
    c.安全性(.Net提供了一种机制,可以在运行代码之前指定代码需要什么安全权限,这个没弄懂,跟强类型有什么关系呢?)
    d.应用程序域(这可能需要更多的讨论)
  • 使用异常来处理错误
  • 使用特性(attribute)
    特性可以理解为数据类型或方法的元数据,即描述数据类型和方法的数据类型,它们可以在源代码中定义,而被另一种语言编写的代码读取(通过反射)
posted @ 2009-04-15 13:15  君未鸣  阅读(459)  评论(2编辑  收藏  举报