《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的优势:
- GC。
- .NET语言之间无缝交互。
- 允许.NET代码调用非.NET代码,如C。这个特性称为平台调用。
- .NET Framework组件与COM组件之间无缝交互。
- 程序运行不再在注册表中注册。
- 允许一个机器上存在同一个DLL的不同版本,解决了DLL HELL。这个特性称为并行执行。
- 庞大的FCL。
编译运行:
- C#代码被编译器编译成程序集,程序集包含CIL(中间语言),使用的类型信息,对其他程序集的引用信息。
- 运行时,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加入异步。