当前位置: 首页 > 编程语言 > C# > 正文

《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),应用类是依靠核心类的。

如图:(图片来自书)