《C#图解教程》第1章 C#和.NET框架 读书笔记

1.1 在.NET之前
C#编程语言是为在微软公司的.NET框架上开发程序而设计的。
1.1.1 20世纪90年代末的Windows编程
20世纪90年代末,大多数程序员在使用VB、C和C++。一些C和C++程序员在使用纯Win32 API,但大多数人在使用MFC(Microsoft Foundation Class,微软基础类库),其他人已经转向了COM(Component Object Model,组件对象模型)。纯Win32 API不是面向对象的,而且使用它的工作量比使用MFC的更大。MFC是面向对象的,但是它却不一致,并逐渐变得陈旧。COM虽然概念简单,但它的实际代码复杂,并且需要很多丑陋的,不雅的底层基础代码。所以这些编程技术还有一个缺点是它们主要针对桌面程序而不是Internet进行开发。
1.1.2 下一代平台服务的目标
由于20世纪90年代末使用微软平台的Windows编程分化成许多分支并且所有这些技术都有自己的问题,所以我们需要的是一个集成的、面向对象的开发框架。其中这个开发框架需要实现的代码执行环境的目标是安全、多平台、性能,开发环境的目标是面向对象的开发环境、一致的编程体验、使用行业标准进行通信、简化的部署、语言独立、互操作性。
1.2 .NET时代
.NET框架是一种比MFC和COM编程技术更一致并面向对象的环境。它的特点是多平台、行业标准和安全性。
1.2.1 .NET框架的组成
.NET框架由CLR(Common Language Runtime,公共语言运行库)和FCL(Framework Class Library,类库)两部分组成。CLR在运行时管理程序的执行,包括以下内容内存管理和垃圾收集、代码安全验证、代码执行和线程管理及异常处理。其中FCL包括BCL(Base Class Library,基类库),是.NET框架使用的一个大的类库,而且也可以在你的程序中使用。
1.2.2 大大改进的编程环境
编程环境的特点有面向对象的开发环境、自动垃圾收集、互操作性、不需要COM、简化的部署、类型安全性、基类库。
1.3 编程成CIL
.NET语言的编译器接受源代码文件,并生成名为程序集的输出文件。程序集要么是可执行的,要么是DLL(Dynamic Link Librares,动态链接库)。程序集里的代码并不是本机代码,而是一种名称为CIL(Common Intermediate Language,公共中间语言)的中间语言。程序集包括下列项目程序的CIL,程序中使用的类型的元数据,对其他程序集引用的元数据,对其他程序集引用的元数据。
1.4 编译成本机代码并执行
程序的CLI直到它被调用运行时才会被编译成本机代码。在运行时,CLR执行下面的步骤检查程序集的安全特性、在内存中分配空间、在程序集中的可执行代码发送给实时(Just In Time,JIT)编译器,把其中一部分编译成本机代码。程序集中 的可执行代码只在需要的时候由JIT编译器编译,然后它就被缓存起来以备在后来的程序中执行。使用这个方法意味着不被调用的代码不会被编译成本机代码,而且被调用到的代码只被编译一次。一旦被编译成本机代码,CLR就在它运行时管理它,执行像释放无主内存、检查数组边界、检查参数类型和管理异常之类的任务。这时有两个重要的术语由此而生,托管代码指的是为.NET框架编写的代码,需要CLR,非托管代码指的是不在CLR控制之下运行的代码,比如Win 32 C/C++ DLL。
1.5 CLR
.NET框架的核心组件是CLR,它在操作系统的顶层,负责管理程序的执行。
1.6 CLI
CLI(Common Language Infrastructure,公共语言基础结构)是一组阐述了系统的架构、规则和约定的规范。CLI组成包括CTS(Common Type System,公共类型系统)和CLS(Common Language Specification,公共语言规范)。
1.7 各种缩写
程序集里有CIL(Common Intermediate Language,公共中间语言),CLI(Common Language Infrastructure,公共语言基础结构)里有CTS(Common Type System,公共类型系统)、CLS(Common Language Specification,公共语言规范),CLR(Common Language Runtime,公共语言运行库)里有GC(垃圾收集器)、JIT(实时编辑器)、BCL(基类库)。
1.8 C#的演化
介绍了C#每个版本的演化和特点,2.0的泛型、3.0的LINQ、4.0的命名参数和可选参数、5.0的异步。

你可能感兴趣的:(C#)