2
译者序
C#(读作“C sharp”) 作为一种编程语言,设计宗旨是创建在.NET Framework 上运行的各种
应用程序。C#简单、功能强大、类型安全,而且是完全面向对象的。C# 凭借在许多方面的
创新,在保持 C 语言风格的表现力和雅致特征的同时,实现了应用程序的快速开发。
Visual C#是 Microsoft 对 C#语言的实现。而 Visual Studio 作为 Microsoft 的一款“交互开发
环境”(IDE)产品,通过功能齐全的代码编辑器、编译器、项目模板、设计器、代码向导、
功能强大而易用的调试器以及其他工具,实现了对 Visual C#的支持。通过.NET Framework 类
库(FCL),可访问许多操作系统服务以及其他许多有用的、精心设计的类,这些类可显著
加发开发过程。
本书是为有志于进行 Visual C#开发的人员量身定制的一本“快速上手”指南。和市面上简
单地罗列各种语法元素的书籍不同,本书使用了大量生动、实际的例子,逐步骤地指引你
在 Visual Studio 中进行 C#编程。
随着学习的深入,你将牢牢地掌握 C#语言的各种概念,并很快就能掌握编写各种实际的 C#
程序的技巧。这些程序从简单的控制台应用程序,一直到更高级的 WPF 窗体应用程序;从
简单的“Hello World”程序,一直到更实用的数据库应用程序、用 TPL(任务并行库)来编
写的多线程应用程序以及 WCF Web 服务。
整个学习过程非常清晰和直接。在本书上一版《Visual C# 2008 从入门到精通》的基础上,
新的一版进行了大量修订和增补。在内容的衔接和对新的 C# 4.0 的侧重上,更是下足了功
夫。如果你是一名 C#的新手,可以选择从头读到尾的方式,整个阅读过程应该是流畅、没
有阻碍的。如果你是一名有经验的 C#开发者,那么可以选择性地阅读自己感兴趣的主题,
比如自己感觉比较薄弱的环节以及和 C# 4.0 新特性有关的章节。具体可以参见本书前言的
“导读”一节。
其实任何书都是有瑕疵的。翻译一本书的过程其实和写一个程序的过程差不多。无论在这
个过程中的感觉有多么“完美”,最后总能找出这样或那样的错误或者并不完美的地方。因
此,一本没有勘误、没有后期维护的书不能算是一本真正的好书。根据传统,本书在付印
之后,我的博客会开辟它的专栏,提供相关资源(比如源代码、练习文件)以及勘误的下
载,详情请访问 http://transbot.blog.163.com。本书需要重印的时候,我也会敦促出版商将
已经确定的勘误反映到新的一刷中。
在阅读本书的同时,推荐关注同样由我翻译、Jeffery Richter 著的《CLR via C#》第 3 版。这
本书从更底层的角度讲解了 C#以及它面向的“公共语言运行时”(CLR),帮助你加深对语
言精妙之处的体验,同时对语言有一个更牢靠的掌握,加深和巩固你在本书中学到的知识。
简单地说,像《Visual Studio 2010 从入门到精通》这样的书是将重点放在特定的应用程序
类型上,帮助你“自上而下”地学习;而《CLR via C#》这样的书是将重点放在开发平台上
面,帮助你“自下而上”地学习。
周靖
2010.7@北京
3
致谢
福斯铁路桥(Forth Railway Bridge 1890)位于英国苏格兰爱丁堡西边,是跨越福斯湾海
峡上的第一座桥梁,距今已经有 120 年的历史了。桥梁施工历时七年,中间更换了设计工
程师,修改了设计方案。七年中,施工动用了四千多名工人,高空施工中牺牲了 98 人,并
造成了数百名人员伤残。为了纪念这些为英国桥梁事业做出贡献的蓝领工人,后人在桥址
处修建了纪念馆。1890 年 3 月 4 日大桥建成,威尔斯七世国王将一枚金铆钉钉在桥上,宣
告大桥竣工通车。
这座桥有一个有趣的传说,为这座桥上漆的工人一辈子都干不完他们的活儿。因为从
一头油漆到另一头,要花费好几年的时间。而等到油漆完毕之后,又必须要从头开始了。
我不敢肯定这是由于苏格兰多变的天气造成的,还是由于所用的油漆不行。不过,我的女
儿坚持是由于爱丁堡市议会一直没有想好桥应该是什么颜色。我有时觉得本书也有类似的
特点。当我完成一个版本并看到它出版后不久,Microsoft 便宣布了对 Visual Studio 和 C#的
另一次重大更新,而我在 Mirosoft 的朋友就会打电话给我,说:“下个版本有什么打算?”
不过,和为福斯铁路桥上漆不同的是,编写这本书的新版总是一件令人享受的工作。它让
我每次都能创造出更好的作品(绝对不是每次都发明一种不同捉笔方式)。总有一些新奇的
东西可供学习,总有一些创造性的技术可供把玩。在这一版中,我讨论了 C# 4.0 和.NET
Framework 4.0 的新特性。开发人员现在构建的应用程序可以更有效地利用越来越强大的计
算机硬件。虽然书籍的升级是一个永不会结束的任务,但我总是乐在其中。你对知识的渴
求,想必也是如此吧?
从事这个项目期间,我的很大一部分乐趣来自我有机会与 Microsoft Press 的精英、
MicrosoftVisual Studio 2010 项目组的开发人员以及对每一章进行审稿和提出各种改进意见
的人士共事。尤其感谢 Rosemary Caperton 和 Stephen Sagman。正是由于他们的辛勤工作,
才确保了项目一直处于正轨。还要感谢 Per Blomqvist,他审阅(和校订)了每一章。感谢
Roger LeBlanc,他非常辛苦地编辑我的手稿,并将我的文字变得更规范。特别值得一提的
是 Michael Blome,他使我能提早接触到 Visual Studio 2010 软件,并回答了我关于“任务并
行库”(TPL)的许多问题。感谢 Content Master 的一些会员,他们有偿审阅和测试了本书
的代码,感谢 Mike Sumsion,Chris Cully,James Millar 和 Louisa Perry。当然,还必须感谢
Jon Jagger。2001 年的时候,是他和我共同创作了本书的第一版。
最后,我必须感谢我的家庭。我的妻子 Diana 是我所有灵感的源泉!
—John Sharp
4
前言
Microsoft Visual C#是一种功能强大、使用简单的语言,主要面向需要使用 Microsoft .NET
Framework 来创建应用程序的开发者。它在 C++和 Microsoft Visual Basic 的基础上去芜存菁,
最终成了一种更加清晰、更富有逻辑的语言。C# 1.0 于 2001 年亮相。随着 C# 2.0 和 Visual
Studio 2005 的问世,语言中新增了几个重要的功能,其中包括泛型、迭代器和匿名方法等。
随同 Microsoft Visual Studio 2008 发布的 C# 3.0 添加了更多功能,例如扩展方法、lambda
表达式以及最有名的语言集成查询(Language Integrated Query,LINQ)工具。语言的最新版本
C# 4.0 提供了进一步的增强,它改善了与其他语言和技术的互操作性。新增的功能包括命
名和可选参数;dynamic 类型,它告诉语言的“运行时”要实现一个对象的晚期绑定;以
及协变性和逆变性,它们解决了泛型接口的定义方式所造成的一些问题。C# 4.0 利用了最
新版本的.NET Framework,新版本也是 4.0。在这个版本中,.NET Framework 添加了许多新
东西,但最重要的就是构成“任务并行库”(Task Parallel Library,TPL)的类和类型。现在
可以使用 TPL 构建具有良好伸缩性的应用程序,从而快速和简单地利用多核处理器的强大
能力。对 Web 服务和 Windows Communication Foundation(WCF)的支持也得到了扩展;
现在可以遵循 REST 模型和较传统的 SOAP 方案构建服务。
Microsoft Visual Studio 2010 提供的开发环境使得这些强大的功能变得易于使用,Visual
Studio 2010 新增的大量向导和增强措施也显著提高了开发人员的工作效率。
面向的读者
本书假定你想使用 Visual Studio 2010 和.NET Framework 4.0 学习基础的 C#编程知识。本书
将指导你学习 C#语言的各种功能,并利用学到的知识构建在 Microsoft Windows 操作系统
上运行的应用程序。学完本书后,会对 C#有一个全面、透彻的理解,并会用它构建 Windows
Presentation Foundation(WPF)应用程序,会用 ADO.NET 和 LINQ 访问 Microsoft SQL Server
数据库,会用 TPL 构建反应灵敏的、易于伸缩的应用程序,并会使用 WCF 创建 REST 和 SOAP
Web 服务。
导读
本书将帮助你掌握在多个基本领域的开发技巧。无论你是刚开始学习编程,还是需要从另
一种语言(C、C++、Java 或者 Visual Basic)转移到 C#,都可以选用本书。根据下表,可以找
到自己的最佳起点。
5
读者类型
步 骤
面向对象编程的新手
1. 按照“安装和使用练习文件”一节的步骤来安装练习文件。
2. 按照顺序阅读第Ⅰ部分、第Ⅱ部分和第Ⅲ部分的各章。
3. 有了一定经验之后,如果有兴趣,可以继续完成第Ⅳ部分、
第Ⅴ部分和第Ⅵ部分的学习。
熟悉 C 语言等过程编程语言,但新
涉足 C#的读者
1. 按照“安装和使用练习文件”一节的步骤来安装练习文件。略
读前 5 章,获得对 C#和 Visual Studio 2010 的大致印象,然后
将阅读重点放在第 6~21 章。
2. 有了一定经验之后,如果有兴趣,可以继续完成第Ⅳ部分、第
Ⅴ部分和第Ⅵ部分的学习。
从面向对象编程语言 C++或者 Java
等转移到 C#语言的读者
1. 按照“安装和使用练习文件”一节的步骤来安装练习文件。
2. 略读前 7 章,获得对 C#语言和 Visual Studio 2010 的大致印象,
然后将阅读重点放在第 8~21 章。
3. 有关构建 Windows 应用程序和使用数据库的信息,参见第Ⅳ
部分和第Ⅴ部分。
4. 有关构建可伸缩应用程序和 Web 服务的信息,请参见第Ⅵ部
分。
从 Visual Basic 6 迁移到 C#的读者
1. 按照“安装和使用练习文件”一节的步骤来安装练习文件。
2. 按照顺序阅读第Ⅰ部分、第Ⅱ部分和第Ⅲ部分的各章。
3. 有关构建 Windows 应用程序的信息,请参见第Ⅳ部分。
4. 有关访问数据库的信息,请参见第Ⅴ部分。
5. 有关创建可伸缩应用程序和 Web 服务的信息,请参见第Ⅵ部
分。
6. 阅读每章末尾的“快速参考”小节,了解 C#特有的构造。
做完所有练习之后再将本书作为参
考书使用的读者
1. 使用索引或本书目录找到与特定主题相关的信息。
2. 阅读每章最后的“快速参考”,查看对当前章所介绍的语法和
技术的简单回顾。
本书的约定和特色
本书采用了少量约定,目的是使内容更容易理解。正式阅读本书之前,先看一看下面的叙
述,我解释了全书采用的约定,并指出了本书的一些有用的特色。
约定
每个“练习”都是一系列任务。每个任务都采用一系列已编号的操作步骤的形式。项
目符号(•)表明练习只有一个步骤。
- 1
- 2
- 3
- 4
- 5
前往页