目录
C#和.NET框架
在.NET之前
20世纪90年代,微软平台多数程序员使用VB、C或C++。他们使用的技术都有问题。
技术 问题 纯Win32 API 不是面向对象,工作量比MFC大 MFC(Microsoft Foundation Class,微软基础类库) 虽是面向对象,但是不一致,且过于陈旧 COM(Component Object Model,组件对象模型) 虽然概念简单,但实际代码复杂丑陋
通病 以上技术都针对桌面程序开发,与Web编程大相径庭
由此引出下一代平台的目标
.NET时代
.Net框架特点
.NET框架的组成
CLR(Common Language Runtime,公共语言运行库)
内存管理和垃圾回收 代码安全验证 代码执行、线程管理及异常处理
编程工具涵盖编码和调试所需一切
Visual Studio IDE .Net兼容编译器 调试器 网站开发服务器端技术,比如ASP.NET或WCF
BCL(Base Class Library,基类库):.NET框架使用的一个大类库
大大改进的编程环境
面向对象 自动垃圾回收 CLR有GC(Garbage Collector,垃圾收集器),为你自动管理内存。(自动从内存中删除程序不再访问的对象) 互操作性
.NET语言允许不同.NET语言编写的软件模块无缝交互
一种.NET语言写的程序可以使用甚至继承用另一种.NET语言写得类,只需遵循一定规则 因为能容易的集成不同编程语言生成的模块,.NET框架有时被称为语言无关
.NET提供平台调用(platform invoke,P/Invoke):允许.NET代码调用并使用非.NET代码。它可以使用标准Win32 DLL导出的纯C函数代码,比如Windows API .NET框架允许与COM互操作:.NET框架组件能调用COM组件,COM组件也能调用.NET组件。 不需要COM 摆脱了COM也就能摆脱下面这些东西,但系统中依然使用很多COM组件,所以偶尔还需要编写代码与这些组件交互,这将在25章讨论
IUnknown接口 类型库 手动引用计数 HRESULT 注册表 简化的部署
.NET程序无需注册表,意味着最简单情形下,复制过去就能用。 .NET提供并行执行的特性,允许一个DLL的不同版本在同一机器上存在。即每个程序都可访问程序生成时使用的版本DLL 类型安全性 CLR检查并确保参数及其它数据对象的类型安全,不同编程语言编写的组件间也无问题 基类库 .NET框架提供一个庞大的基础类库(Base Class Library,BCL)。在写程序时可以使用其中的类
通用基础类 : 一组强大的工具,比如文件操作、字符串操作、安全和加密。 集合类 : 列表、字典、散列表及位数组 线程和同步类 : 用于创建多线程程序 XML类 : 用于创建、读取及操作XML文档 编译成CIL
程序集要么可执行,要么是DLL 程序集的代码不是本机代码,而是一种名为CIL(Common Intermediate Laguage,公共中间语言)的中间语言 程序集包含以下内容
程序的CIL 程序中使用的类型的元数据 对其它程序集引用的元数据
CIL又叫IL(Intermediate Language)或MSIL(Microsoft Intermediate Language)
编译成本机代码并执行
程序的CIL直到被调用才会被编译成本机代码。运行时,CLR执行下面的步骤
检查程序集安全特性 在内存中分配空间 把程序集中可执行代码发送给实时(Just-in-Time,JIT)编译器,把其中一部分编译成本机代码
一旦CIL被编译成本机代码,CLR就在它运行时管理它,执行释放无主内存、检查数组边界、检查参数类型、管理异常等任务。同时两个术语由此而生
托管代码:为.NET框架编写的代码,需要CLR 非托管代码:不在CLR控制下运行的代码,比如Win32 C/C++ DLL 编译和执行
CLR Common Language Runtime
CLR 在操作系统的顶层,负责管理程序执行 还提供下列服务
自动垃圾收集 安全和认证 通过访问BCL(Base Class Livrary,基类库)得到广泛的编程功能,包括如Web服务和数据服务之类的功能
CLI Common Language Infrastructure
过去由于语言和平台的不同,编程语言的内置类型各不相同。 例如,组成整数的位数对应不同语言和平台就有很大差别。 为了统一协作,必须有一组标准,这就是CLI(Common Language Infrastructure,公共语言基础结构)
CLI的重要组成部分
公共类型系统 CTS(Common Type System,公共类型系统)定义了在托管代码中一定会使用的类型特征。
定义了一组丰富的内置类型,以及每种类型固有的、独有的特性 .NET兼容编程语言的类型通常映射到CTS中已定义内置类型集的某一特殊子集 CTS的所有类型都继承自公共基类-object 使用CTS可确保系统类型和用户定义类型能被任何.NET语言兼容使用
公共语言规范 CLS(Common Language Specification,公共语言规范)详细说明了一个.NET兼容编程语言的规则、属性、行为,其主题包括数据类型、类结构、参数传递。 各种缩写
C#的演化
版本 焦点特性 章节 5.0 异步 20 4.0 命名参数和可选参数 5 3.0 LINQ 19 2.0 泛型 17 1.0 C#
PS:最后附上本书PDF扫描版下载地址
C#教程 第二章 C#编程概述