首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

大约每隔十年,都会出现新的技术,改变我们对应用程序开发的思维方式。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的数据访问组件,将在第14章中讨论。

本书第三部分讨论C#与CLR和FCL(Framework Class Library,框架类库)的关系。

第17章“程序集与版本控制”阐述了私有程序集和公共程序集的区别,并说明了如何创建和管理程序集。在.NET中,程序集(assembly)是一个文件集合,对用户来说就是一个DLL即可执行文件。程序集是复用、版本控制、安全性和部署的基本单位。

.NET程序集中包含与类、方法、属性(property)、事件等等相关的丰富元数据(metadata)。这种元数据将编译进程序,并可借助反射机制通过编程获取。第18章“属性与反射”探讨了如何在代码中添加元数据,如何创建自定义的性质(attribute),以及如何通过反射访问元数据。本章继而讨论了动态调用,即通过晚期(运行时)绑定(late binding)调用方法,最后说明了反射发送(reflection emit),这是一种高级技术,能够创建“可自行修改的代码”。

.NET框架是为支持基于Web和分布式的程序而设计的。用C#创建的组件可以位于同一台机器上的其他进程中,也可以位于跨网络、跨Internet的其他机器上。封送处理(marshaling)是一种与远程对象互操作的技术,而远程处理(remoting)涵盖了与远程对象通信的各种技术。第19章“封送处理与远程处理”详述了这两方面内容。

FCL为异步I/O提供了丰富的支持,还提供了一些其他类,使我们不再需要显式处理线程。但是,C#仍然提供了丰富的线程与同步化的支持,这些将在第20章“线程与同步化”中讨论。

第21章“流”将讨论流(stream),这是一种不仅能够与用户交互,而且也可通过Internet获取数据的机制。本章将全面讨论C#对序列化(serialization)的支持:这是一种将对象映像(object graph)写入磁盘并可以再次读回的能力。

第22章“.NET和COM编程”探讨了互操作性——与.NET框架托管环境之外创建的COM组件互操作的能力。我们可以从C#程序调用COM组件,也可以从COM调用C#组件。第22章叙述了如何实现这一点。

本书的最后是一个附录“C#关键字”。

本书的读者对象

Who This Book Is For

本书针对的是那些要为.NET平台开发应用程序的程序员。毫无疑问,许多读者已经有C++、Java或Visual Basic的经验。有些读者可能具有其他编程语言的经验,还有一些读者没有太多编程经验,但可能使用过HTML和其他Web技术。本书适合于所有这些读者,虽然如果完全没有编程经验,困难会更大一些。

如果你是从C、C++、Visual Basic或者Java转来的,以下几节的内容将提供这些语言与C#的一些基本比较。当然,更重要的是在阅读本书的过程中留意具体针对你的“注意” 旁注。

C# 2.0C# 1.1

C# 2.0 Versus C# 1.1

自1.1版以来,C#以及开发环境和.NET框架都发生了很大变化。所有变化的目的都是为了尽量减少程序员必须操心的琐碎工作,从而有助于将精力放在构建坚固的应用程序上。

本书将这些变化融入原有内容之中,因此本书并不适合只想了解 C# 2.0 中变化的熟练 C# 1.1 程序员。也就是说,我只会在正常行文中标明哪些内容是 C# 2.0 中新增的。

C#VB.NET

C# Versus Visual Basic.NET

.NET框架有一个前提,就是所有语言都是生而平等的。但是,套用George Orwell(译注5)的话,有些语言会比其他语言更平等。C#正是这样一种用于.NET开发的优秀语言。你将看到,它是一种极为全能、极为可靠而且设计极佳的语言。它也是目前讲述.NET编程的文章和教程中最常使用的语言。

可能许多VB 6程序员会选择学习C#,而不是升级到VB.NET。这并不奇怪,因为从VB6过渡到VB.NET几乎与从VB6到C#一样难(当然,这种说法是有争议的),而且,从历史上看,无论这种说法是否公正,使用C系列语言的程序员总是比VB程序员收入高。事实上,VB程序员总是无法获得应有的尊敬,而C#为他们提供了受益匪浅的转机。

无论如何,如果你有VB经验的话,我们要说,C#欢迎你!本书充分考虑了VB程序员的需要,并尽量使这种过渡更加轻松。

C#Java

C# Versus Java

Java程序员可能会带着复杂的感情(畏惧、欢喜和憎恶……)看待C#。有人曾经暗示C#某种程度上就是Java的一个“仿造品”。我不想评论微软和“反微软”阵营之间的门派之争,可是必须承认,C#的确从Java那里获益良多。然而,Java也是从C++那里学的艺呀,C++的语法要溯源到C的头上,而C语言还不是建立在其他语言的基础上?毕竟,我们都是站在巨人的肩上。

Java程序员转换到C#,其过渡过程是非常容易的。语法很像,语意熟悉而且感觉很舒服。Java程序员可能应该把精力集中在Java和C#的区别上,这样可以高效率地使用C#语言。我在本书各章中提供了许多针对Java程序员的“注意”旁注。

C#C/C++

C# Versus C and C++

虽然在.NET中也可以用C或者C++编程,但这既不容易也不自然。老实讲,作为一名有十多年经验的C++老手,写过一打C++书的作者,让我用托管C++比牙医钻我的牙还要难受。也许是因为C#太好用了吧。不管怎么说,一见到C#,我就再也不想走老路了。

但是要小心,前方道路还有许多小陷阱,我会通过针对C/C++程序员的“注意”旁注给予提醒。

排版约定

Conventions Used in This Book

本书的英文采用如下排版约定:

斜体(italic)用于:

路径名、文件名和程序名。

Internet地址,如域名和URL。

为新术语下定义的地方。

等宽字体(constant width)用于:

应该原样输入的命令行和选项。

程序实例中的名字和关键字,包括方法名、变量名和类名。

等宽斜体(constant width italic

用于可替换项,如语法示例或代码中的变量或可选的元素。

等宽黑体(constant width bold)

用于在程序代码中表示强调。

请特别注意正文之外的“注意”旁注,它们带有下列图标:

这是一个提示。包含当前主题的非常有用的补充信息。

这是一个警告。可以帮助你解决和避免讨厌的问题。

支持

Support

作为作者应尽的责任,我通过以下网站为本书提供不断的更新支持:

http://www.LibertyAssociates.com

还可以从中找到本书的所有源代码。在这个网站中,有一个图书支持讨论组,其中有专门针对C#问题的讨论区。但是在贴出新的问题时,请先查一查FAQ(Frequently Asked Questions,常见问题解答)列表和勘误文件。如果这样还不能解决问题,再直接到讨论组中发表出来。

最有效的获得帮助的方式是尽量问得更确切一些,甚至可以用一个小的范例程序来说明你的问题或者不清楚的地方。也可以定期查看Internet上的各种新闻组和讨论组。微软提供了大量的新闻组和DevelopMentor公司(http://www.develop.com)都提供了极为精彩的.NET邮件列表。

建议与评论

We’d Like to Hear from You

我们已尽力核验本书所提供的信息,尽管如此,仍不能保证本书完全没有瑕疵,而网络世界的变化之快,也使得本书永不过时的保证成为不可能。如果读者发现本书内容上的错误,不管是赘字、错字、语意不清,甚至是技术错误,我们都竭诚虚心接受读者指教。如果您有任何问题,请按照以下的联系方式与我们联系。

奥莱理软件(北京)有限公司

北京市 海淀区 知春路49号 希格玛公寓B座809室

邮政编码:100080

网页:http://www.oreilly.com.cn

E-mail:info@mail.oreilly.com.cn

与本书有关的在线信息(包括勘误、范例程序、相关链接)如下所示。

http://www.oreilly.com/catalog/progcsharp4/(原书)

http://www.oreilly.com.cn/book.php?bn=978-7-121(中文版)

北京博文视点资讯有限公司(武汉分部)

湖北省 武汉市 洪山区 吴家湾 邮科院路特1号 湖北信息产业科技大厦1402室

邮政编码:430074

电话:(027)87690813    传真:(027)87690813转817

读者服务网页:http://bv.csdn.net

读者服务信箱:

sheguang@broadview.com.cn(读者信箱)

broadvieweditor@gmail.com(投稿信箱)

Safari® Enabled

如果你在你喜欢的技术书籍的封面上看到“Safari® Enabled”图标,则说明这本书可以在O'Reilly 网络Safari在线书店找到。

Safari提供的不仅是电子书,它是一个虚拟的图书馆,它允许你轻易地搜索到数千种最顶级的技术书籍,复制和粘贴代码,下载书籍章节,并可以让你找到最精确、即时的信息。请免费访问:http://safari.oreilly.com

致谢

Acknowledgments

在感谢其他人之前,我要特别向Ian Griffiths致谢,他为本书贡献了大量的技术编辑和专业知识,他真是一个令人尊敬,聪明绝伦的人。

本书已经是第四版,其间有太多朋友和读者在内容的改进上助力良多,他们的名字无法一一列举。但是我必须特别提到Donald Xie, Dan Hurwitz, Seth Weiss, Sue Lynch, Cliff Gerald, Tom Petr, Jim Culbert, Mike Woodring, Eric Gunnerson, Rob Howard, Piet Obermeyer, Jonathan Hawkins, Peter Drayton, Brad Merrill, Ben Albahari, Susan Warren, Brian Bischof, 和 Kent Quirk。(译注6)

是John Osborn使我得以与O'Reilly签约,对此我感激不尽。Valerie Quercia, Claire Cloutier,和Tatiana Diaz为前几版付出了艰苦劳动,更新到C# 2.0是由Brian Jepson负责的。Rob Romano则帮助制作和修饰了书中的大量图片。O'Reilly公司总裁Tim O'Reilly也提供了许多支持,我非常感谢。

许多读者来信指出了本书前三个版本的各种拼写错误和小讹误,对此表示感谢。尤其要感谢Peter Adams、Sol Bick、Brian Cassel、Steve Charbonneau、Ronald Chu、John Corner、Duane Corpe、Kevin Coupland、Randy Eastwood、Glen Fischer、Larry Fix、Andy Gaskall、Dave Fowler、Vojimir Golem、David Kindred、Steve Kirk、Bob Kline、Theron LaBounty、Aron Landy、Jeremy Lin、Chris Linton、Mark Melhado、Harry Martyrossian、Jason Mauss、 Stephen Nelson、Harold Norris、Tim Noll、Mark Phillips、Marcus Rahilly、Paul Reed、Christian Rodriguez、David Solum、Paul Schwartzburg、Erwing Steininger、Fred Talmadge、Steve Thomson、Greg Torrance、Ted Volk、John Watson、Walt White和Seen Sai Yang。

我们已经尽力在第四版中修改了所有已发现的错误。我们还经过仔细检查以确保不再增加新的错误,本书的所有代码都使用Visual Studio 2005编译并运行通过。话虽如此,如果你还是发现了错误,请访问我的网站(http://www.LibertyAssociates.com)上的勘误表,如果错误是新的,请给我发邮件:jliberty@libertyassociates.com

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论