zoukankan      html  css  js  c++  java
  • .NET平台一些概念

    1.什么是CLR

    CLR(Common Language Runtime)公共语言远行时,是一个可由多种编程语言使用的“远行时”。CLR的核心功能(比如内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用。CLR不关心开发人员使用哪种语言进行编程,只要编译器面向CLR就可以了,所有,开发人员应该使用自己最适合和熟悉的语言进行编程。所有的编程语言在面向CLR编译器的编译都生成了一个托管模块。托管模块是一个标准的32位的Microsoft Windows可移植执行体(PE32)文件,或者是一个标准的64位Windows可移植的PE32+文件,他们都需要CLR才能执行。

    2.中间语言

    MSIL(中间语言)代码 编译器编译源代码时生成的代码。在运行时,CLR将将IL编译成本地的CPU指令

    3.元数据

    元数据是一个二进制数据块,由几个表构成。这些表分为三个类别:定义表(definiton talbe)、引用表(reference table)和清单表(mainfest table)。

    常用元数据定义表(编译器编译源代码时,代码定义的任何一样东西都会导致定义表中的表中创建一个记录项):

    ModuleDef 总是包含一个用于标示模块的记录项。

    TypeDef 模块中定义的每个类型都在这个定义表中有一个对应的记录项。

    MethodDef 模块中定义的每个方法都在这个定义表中有一个对应的记录项。

    FieldDef 模块中定义的每个字段都在这个定义表中有一个对应的记录项

    ParamDef 模块中定义的每个参数都在这个定义表中有一个对应的记录项

    PropertyDef 模块中定义的每个属性都在这个定义表中有一个对应的记录项

    EventDef 模块中定义的每个事件都在这个定义表中有一个对应的记录项

      常用的引用元数据表:

    AssemblyRef 模块中引用的每个程序集在这个表中都有一个对应的记录项

    ModuleRef 模块引用的每个类型可能是由别的PE模块实现的,所有那些模块在这个表都有一个记录项

    TypeDef 模块引用的每个类型在这个表中都有一个对应的记录项

    MemberRef 模块引用的每个成员都在这个表中有一个对应的记录项

    清单元数据表:

    AssemblyDef 如果该模块标示的是一个程序集,就在这个元数据表中包含单个记录项。该记录项列出了程序集名称(不含路径和扩展名)、版本(major,minor,build和revision)、语言文化(culture)、一些标志(flag)、哈希算法以及发布者的公钥。

    FileDef 作为程序集一部分的每个PE文件和资源文件在这个表中都有一个对应的记录项。

    MainifestResourceDef 作为程序集一部分的每个资源在这个表中都有一个对应的记录项

    ExportedTypesDef 从程序集的所有PE模块中导出的每个public类型中在这个表中都有一个对应的记录项。

    4.通用类型系统(Common Type System)

    CTS定义了一个类型库,无论时Visual Basic.NET还是c#,他们的类型系统大体类似。因此.NET将各种不同的编程语言的数据类型进行抽象,就有了CTS。虽然每种编程语言都有自己的类型系统,但编译后都会转成CTS类型。不同的语言编写的程序直间可以相互操作。Vb的integer而C#的System.Int32都对应CTS的System.Int32类型。

    CTS类型主要分成两大类:引用类型和值类型,这两个类型可以相互转换,方法是装箱和拆箱。CTS类型最终继承自Object。

    5.公共语言规范(Common Language Specifiaction,CLS)

    为了创建很容易从其他编程语言中访问的类型,只能从自己的编程语言中挑选其他所有语言都确定支持的那些功能,Microsoft定义了一个“公共语言规范”(Common Language Specifiaction,CLS),它详细定义了一个最小功能集。

  • 相关阅读:
    【AS3代码】AS调用JS
    【AS3代码】MP3音乐的播放/暂停/设定音量大小
    【AS3代码】在上下文菜单(右键菜单)中添加自定义项
    【AS3代码】更换鼠标箭头样式,并跟随鼠标!
    【AS3代码】创建动态文本
    【AS3代码】播放FLV视频流的三步骤!
    【AS3代码】Timer计时器用法
    【AS3代码】指定间隔时间运行函数 及 停止运行函数
    【AS3代码】Keyboard键盘操作!
    多线程_传送带我们到底能走多远系列(6)
  • 原文地址:https://www.cnblogs.com/laoqi/p/4087540.html
Copyright © 2011-2022 走看看