1. .NET Framework类库
    1. 内容丰富的托管代码类集合
      1. 划分成模块
        1. 不同平台根据特性支持部分或全部模块
    2. IL提供的核心功能,例如,通用类型系统中的基本数据类型 Windows GUI支持和控件 Web窗体 数据访问 目录访问 文件系统和注册表访问 网络和web浏览 NET特性和反射 访问Windows操作系统的各个方面(如环境变量等) COM互操作性
  2. 公共语言运行库CLR
    1. Common Language Runtime
    2. .NET 运行库
      1. .NET核心执行环境
    3. 任务
      1. 托管代码的
        1. 编译
        2. 运行
          1. 垃圾回收
          2. garbage collection
          3. 频繁检查内存,删除不再需要的内容
          4. 没有时间帧
          5. 在不可与之的时间进行
    4. 管理方式
      1. 管理内存
      2. 允许进行夸语言调试
  3. 程序集
    1. 包含编译好的、面向.NET Framework的代码的逻辑单元
    2. IL代码储存
      1. 可执行的应用程序*.exe
      2. 程序使用的库*.dll
    3. 元信息/元数据
      1. 数据的信息
      2. 允许程序集是完全自我描述的
      3. 不需要其他信息就能使用程序集
      4. 不会遇到
        1. 不能把需要的数据添加到注册表
    4. 可选资源
      1. 声音,图片等
    5. 共享程序集
      1. 可重用的代码放在所有应用程序都可以访问的地方
      2. 全局程序集高速缓存GAC
        1. Global Assembly Cache
        2. 把包含代码的程序集放在包含该高速缓存的目录下
  4. 托管代码
    1. 平台无关性
    2. 性能提高
      1. IL是即时编译
      2. JIT不是一次性编译所有代码
        1. 只编译调用到的代码
        2. 保存已编译的内部可执行代码
          1. 下次调用无需重新编译
        3. 大部分代码不是每次运行都执行
    3. 非托管
      1. 不在CLR控制下的应用程序
      2. 可以访问操作系统的低级功能
  5. 编译代码
    1. 把代码转换成目标操作系统能够理解的语言,本机代码
    2. 把代码编译成中间语言IL代码
    3. JIT编译器把IL编译成专用目标机器的本机代码
      1. Just-In-Time
      2. IL代码仅在需要时才编译
  6. IL代码
    1. Intermediate Language
    2. 独立于机器、操作系统、CPU
    3. 面向对象和使用接口
    4. 值类型与引用类型
      1. 预定基本数据类型
      2. 值类型
        1. 变量直接保存其数据,在堆栈上面分配存储空间
      3. 引用类型
        1. 变量保存数据的地址,引用类型的数据在堆上分配存储空间。
    5. 强数据类型
      1. 所有的变量都清晰地标记为属于某个特定数据类型
    6. 语言互操作性
  7. 公共语言规范CLS
    1. Common Language Specification
  8. 通用类型系统 CTS
    1. Common Type System
    2. 最低标准集
      1. 所有.NET语言必须支持
    3. 实现在各种语言之间进行交互
    4. 定义IL中可使用的预定义数据类型
      1. .NET的语言生成基于这些类型的编译代码