《C#3.0 in a Nutshell,3rd Edition》之C#3.0和.net3.5基本介绍2010-12-16 博客园 林海雪原前言C#3.0是一门面向对象的,具有多用途和类型安全等特 征。为实现开发和学习的高效性,她在语言的简单,易表达,以及可编程性上做 了很大努力。使得新人能够很快入门,开发者能够快速开发出程序。但这些并不 是损害语言的功能为前提的。正文one Section C#的面向对 象性(Object Orientation)C#同JAVA一样是面向对象的语言,具有封装 (encapsulation),多态(polymorphism),继承(polymorphism)的特性。但是她 也有着区别其它面向对象语言的特点。a.统一的类型系统(Unified type system)就是说所有的类型(Type)都是共享一个通用基础类型(Common base Type).无论值类型或引用类型就是继承自System.object.而object所拥 有的方法所有类型都可以使用,如:ToString(),Equals()等。b.类 (Class)和接口(Interface)在传统的面向对象语言中只有类这一种表现 形式,而在C#(Java)中却有了接口(Interface),接口是一种只有定义没有实现 的类,由于C#是一种单类继承语言,所以接口就显得格外有用,一个类可以继承 多个接口,弥补了单类继承带来的不足。(单类继承应该是语言设计者有意这么 做的,大概是为了保证类的纯净)。c.属性(Properties),方法(Methods) 和事件(Events)传统的面象对象语言只有Methods,而C#增加了属性和方 法,这些特性丰富了我们编程,特别是做一些组件和控件开发的时候就显得特别 有用。two section C#的类型安全(Type Safety)C#是一门强类 型语言,也就是说你定义了Int参数的方法,不用用float参数去调用。编译器 (Complier)会去强制做类型检查,不匹配的类型是会抛出异常(Exception)并提 示错误,变量的定义也是如此。随着VS的IDE功能不断强大,已经提供了智能感 知(IntelliSense)的功能,让我们提前排除这些错误。另外在c#3.0中出 现了Var,但这也是一种强类型,编译器会根据上下文,进行类型推断出她的类 型。three section .net的内存管理(Memory Management)C#运 行在一个运行时(Common Lanague Runtime)上,这个CLR具有强大的功能,她帮 我们管理着程序所用的内存。她有着内存管理,垃圾回收,线程管理等功能。这 样就方便了我们编程,不需要想C++那样需要自己写大量的代码来释放资源,所 以理论上时不会出现内存泄漏的情况的。但是我个人觉最好不要偷懒, 象一些昂贵的资源还是手动的释放比价好,比如:对打印机的调用,还有多线程 管理.防范式编程还是需要的。CLR的垃圾回收一般是有两个线程来运作 的,对于普通的对象的回收器就是直接覆盖堆栈,而对比较昂贵的资源暂时无法 回收的,就会放到另外一个线程上,等到安全点的来临时进行回收。这方面可以 到网上找找介绍资料。four section C#的多平台支撑(Platfrom Support)C#和CLR都是符合ECMA的标准。 C#的代码通常是运行在windows 平台上,但是却不妨碍她运行在其它的系统上如:Linux, Solaris, Mac OS X。.net framework为我们提供了统一的编程模型,所以我们只要针对.net编程 ,而不需要考虑系统的差异性。C#的代码也可以运行在Silverlight这个 宿主(host)上,她是微软新推出的一项技术。five section C#和通用语 言运行时(CLR)的关系C#是.运行在CLR上的众多语言之一,她依赖着.net 提供的内存管理等服务。six section 通用语言进行时(CLR)和.net Framework的关系.net framework 是由CLR和一大堆,一系列的类组成。 这个巨大的类库又分成了核心类(Core libraries)和应用类(applied libraries),应用类是依靠核心类的。如图:(图片来自书)