前言大约每隔十年,都会出现新的技术,改变我们对应用程序开发的思维方式。20世纪80年代早期,可以运行在桌面上的操作系统Unix和强大的新语言C(由AT&T公司开发)是新技术的代表。而20世纪90年代早期出现了Windows和C++。这些技术进展都标志着程序设计方法上的一次沧海桑田般的革命。在2000年,.NET和C# 成为另一次浪潮,而.NET 2.0使这一变迁*终完成。 微软将整个公司的明天都赌在.NET上了。当具有如此规模和影响的公司投入数十亿计美元,重组了整个公司结构,全力支持一个新平台的时候,作为程序员,我们必须对此高度重视。.NET代表着程序设计思维方式���一次巨大变革。简而言之,它是为了推动面向对象的Internet开发而专门设计的全新开发平台。而这个平台的**编程语言就是C#,一种在C(高性能)、C++(面向对象结构)、Java(垃圾回收,高度的**性)和VB(快速开发)等语言众多经验教训之上设计出来的,非常适合用来开发以组件为基础的、多层分布式Web应用程序的新语言。 C# 2.0,作为.NET 2005的**语言,与生俱来的是更新的工具和强大的崭新开发平台。它代表了微软研发的*高成就,简直是太酷了。 关于本书 About This Book 本书是一部教程,讲述C# 和如何用C#编写.NET应用程序。 如果你已经是一名熟练的C# 1.1程序员,只希望了解C# 2.0中的新特性,那么请将本书放下,购买Visual C# 2005: A Developer's Notebook (O'Reilly出版.) 一书。 相反,如果你的目的是复习各种C#技巧,或者你已经熟练掌握了一门编程语言比如C++或者Java,或者这是你要学习的**种编程语言,那么本书正适合你。 使用本书的需求 What You Need To Use This Book 从Visual Studio Whidbey的Beta版 (2005) 开始,获取微软开发中的产品大大方便了。有好几种方式可供选择——和Visual Studio以许多种形式发布一样,.NET 2.0和Visual Studio 2005的预发布版本的获取形式也是多种多样。 下载SDK Beta版的SDK包括命令行编译器、文档和其他工具,可以免费从http://msdn.microsoft.com/ netframework/downloads/updates/default.aspx下载。下载文件不大,但是你需要自己配备代码编辑器(从记事本到SharpDevelop,都可以)。 Express Edition 这是微软发布的Visual Studio简化版,下载文件比较小,所以可以很快上手运行。可以从http://lab.msdn.microsoft.com/vs2005/(译注1)下载各种语言的Express Edition。本书的大多数例子将使用Visual C# Express。有些例子需要Visual Web Developer Express,有些ADO.NET的例子需要安装SQL Server Express或者MSDE (Microsoft Data Engine,微软数据引擎)。 Beta版和社区技术预览版 微软还使Visual Studio 2005的完整版也可以通过下载获取。形式有两种:社区技术预览版(Community Technology Preview, CTP),相对比较粗糙;和功能完整的Beta版。在本书写作时,Visual Studio Professional, Standard和Team System的社区技术预览版已经提供给MSDN订阅者。Visual Studio Professional的Beta 1版已经提供给MSDN订阅者,非订阅者支付运费也可以获得。更多信息,请访问 http://lab.msdn.microsoft.com/vs2005/get/default. aspx。 Mono Mono项目是一个基于.NET的开源开发平台。它是由Novell公司发起的,运行在Linux, Mac OS X和其他操作系统上。虽然当前版本仅面向.NET 1.1,但是安装时可以选择具备对一些.NET 2.0特性的支持。更多信息,请访问 http://www.mono-project.com/about/index.html。 本书将适用于所有这些环境。但是,因为每种环境版本上都稍有差异,所以有些屏幕图会和你实际看到的不同。 本书的组织 How the Book Is Organized **部分集中讲述语言细节,第二部分讨论如何编写.NET程序,第三部分讲述如何结合使用C#和.NET CLR和FCL。 **部分 C#语言 Part I, The C# Language 第1章“C#与.NET框架”,介绍C#语言和.NET平台。 第2章“起步走:‘Hello World’”,演示了一个简单程序,从而为以后的内容提供背景,还介绍了Visual Studio 集成开发环境以及许多C#语言概念。 第3章“C#语言基础”,阐述了语言的基础知识,从内置数据类型到关键字。 类(class)能够定义新的类型,程序员可以用它来扩展语言,更好地为要解决的问题建模。第4章“类与对象”将解释这些构成C#灵魂与心脏的元素。 类可以是现实世界各种事物复杂的表示和抽象。第5章“继承与多态”将讨论类之间的各种关系和操作。 第6章“操作符重载”,教授如何在用户定义类型中添加操作符。 第7章“结构体”和第8章“接口”分别介绍两种很像类的语法构造——结构体和接口。结构体(struct)是一种轻量级的类,比类更严格,对操作系统和内存的要求也更少。接口(interface)就是协定(contract,译注2),它描述了类的工作方式,使其他程序员的程序能够以明确定义的方式与我们的对象互相操作。 面向对象的程序可能需要创建大量的对象。将对象分组,放在一起处理通常会比较方便,C#为此提供了丰富的集合(collection)支持。第9章“数组,索引器与集合”探讨了FCL(Framework Class Library,框架类库)提供的集合类、新的泛型集合以及如何使用泛型创建自己的集合类型。 第10章“字符串与正则表达式”讨论了如何使用C#处理文本字符串和正则表达式。大多数Windows和Web程序都要与用户交互。而在用户界面方面,字符串发挥着极为重要的作用。 第11章“异常处理”解释了如何处理异常(exception),提供了一种面向对象的处理非紧急情况的机制。 Windows应用程序和Web应用程序都是事件驱动的。在C#中,事件是语言中的一类成员(译注3)。第12章“委托与事件”集中讨论了如何管理事件,如何用委托(delegate,一 种面向对象的类型**的回调机制)支持事件处理。 第二部分 C#编程 Part II,Programming with C# 第二部分详细讲述了如何编写.NET程序;包括用Windows Forms编写桌面应用程序和用Web Forms编写Web应用程序。而且,第二部分还讲述了数据库操作和Web服务的创建。 在.NET基础架构之上是操作系统的高层抽象,专门设计用来帮助面向对象软件开发的。这层抽象包括ASP.NET和Windows Forms。ASP.NET中包括用于Web应用程序快速开发的Web Forms,和用于创建无用户界面Web对象(即Web服务)的Web Services。所谓Web 服务就是通过标准Web协议(*常见的是XML和HTTP)提供功能的一种分布式应用程序。 C#提供了以前只有VB中才有的那种RAD(快速程序开发)模型。第13章“构建Windows程序”讲述了如何以这种模型使用Windows Forms开发环境创建专业质量的Windows程序。 无论是面向Web还是桌面,大多数程序都要依赖于大量数据的管理和处理。第14章“用ADO.ENT访问数据”阐述了.NET框架的ADO.NET层,以及如何与Microsoft SQL Server及其他数据提供程序互操作。 第15章“Web Forms和Web Services程序设计”主要讨论ASP.NET技术的两个方面:Web Forms和Web Services。 第16章“集大成”将第二部分中讲述的许多技术结合起来,说明如何构建一个集成应用程序。 第三部分 C#与.NET CLR Part III,The CLR and the .NET Framework 运行库(runtime)是程序的执行环境。CLR(Common Language Runtime,公共语言运行库)是.NET的核心。它包括整个平台都要遵循的一个数据类型系统(译注4),这也是所有为.NET所开发的语言所共有的。CLR负责处理内存管理和对象的引用计数等等事宜。 .NET CLR的另一个关键功能是垃圾回收(garbage collection)。与传统的C/C++编程不同,C#中开发人员不用负责对象的销毁。花费大量时间查找内存泄漏已经成为历史。CLR将在对象不再使用时负责将其清除。CLR的垃圾回收器将检查堆中不再引用的对象,并释放这些对象占用的内存。 .NET平台和类库向上扩展到了中间层平台,从中可以找到容纳了许多支持类的一个基础架构,包括用于进程间通信、XML、线程处理、I/O、**性、诊断等的类型。中间层还包括总称为ADO.NET的数。