《Illustrated C# 2012, 4th Edition》Daniel M. Solis 第1章 C#和.NET框架 笔记

C#是为在.NET Framework上开发程序而设计的语言。

.NET Framework包含CLR和FCL两部分。CLR是执行环境,FCL是框架类库,包含Windows Forms、ASP.NET、LINQ等。

.NET Framework的优势:

  1. GC。
  2. .NET语言之间无缝交互。
  3. 允许.NET代码调用非.NET代码,如C。这个特性称为平台调用。
  4. .NET Framework组件与COM组件之间无缝交互。
  5. 程序运行不再在注册表中注册。
  6. 允许一个机器上存在同一个DLL的不同版本,解决了DLL HELL。这个特性称为并行执行。
  7. 庞大的FCL。

编译运行:

  1. C#代码被编译器编译成程序集,程序集包含CIL(中间语言),使用的类型信息,对其他程序集的引用信息。
  2. 运行时,CLR先检查程序集的安全特性,之后分配内存,将CIL交给JIT编译器,编译成机器码执行。

JIT编译器是CLR的组成部分,JIT编译过的机器码会缓存,遇到相同的CIL时不再编译。微软提供工具Ngen,可以将CIL先编译成机器码,省去JIT的编译时间。

受CLR管理的代码称为托管代码,反之称为非托管代码,如C。

CLR提供的功能包括GC、JIT、异常处理、反射等。

CLI(公共语言基础结构)是一组标准,包括CTS(公共类型系统,如内置类型,基类object等)和CLS(公共语言规范,如类结构、参数传递等)。

C#版本:2.0加入泛型,3.0加入LINQ,4.0加入命名参数和可选参数,5.0加入异步。