C#与.NET 4高级程序设计:第5版
基本信息
编辑推荐
c# 领域久负盛名的经典著作
深入全面地叙述了c# 编程语言和.net 平台核心
以大量示例剖析相关概念
涵盖c# 2010、.net 3.0、.net 3.5 和.net 4
推荐阅读
内容简介回到顶部↑
《c#与.net 4高级程序设计:第5版》是c# 领域久负盛名的经典著作,深入全面地叙述了c# 编程语言和.net 平台核心,并以大量示例剖析相关概念。书中介绍了c# 的各种语言构造、.net 2.0 的类、核心api、公共中间语言(cil)、动态程序集和asp.net 扩展等内容;同时也介绍了.net 3.0、.net 3.5 和.net 4 中的新的编程api,包括wpf、wcf 和wf 的功能;另外,还介绍了最新的c# 2010 编程语言、dlr、tpl、linq 编程技术、com 与.net 的互操作性以及平台无关的.net 开发等。
《c#与.net 4高级程序设计:第5版》由微软c# mvp andrew troelsen 编写,历经多次修订,适合各层次.net 开发人员阅读。
《c#与.net 4高级程序设计:第5版》由微软c# mvp andrew troelsen 编写,历经多次修订,适合各层次.net 开发人员阅读。
作译者回到顶部↑
目录回到顶部↑
《c#与.net 4高级程序设计:第5版》
第一部分 c#与.net平台
第1章 .net之道 2
1.1 .net之前的世界 2
1.2 .net解决方案 5
1.3 .net平台构造块(clr、cts和cls)简介 5
1.4 其他支持.net的编程语言 7
1.5 .net程序集概览 9
1.6 cts 14
1.7 cls 17
1.8 clr 18
1.9 程序集/命名空间/类型的区别 19
1.10 使用ildasm.exe探索程序集 24
1.11 使用reflector来查看程序集 26
1.12 部署.net运行库 27
1.13 .net的平台无关性 27
1.14 小结 28
第2章 构建c#应用程序 30
2.1 .net framework 4 sdk的作用 30
2.2 用csc.exe构建c#应用程序 31
第一部分 c#与.net平台
第1章 .net之道 2
1.1 .net之前的世界 2
1.2 .net解决方案 5
1.3 .net平台构造块(clr、cts和cls)简介 5
1.4 其他支持.net的编程语言 7
1.5 .net程序集概览 9
1.6 cts 14
1.7 cls 17
1.8 clr 18
1.9 程序集/命名空间/类型的区别 19
1.10 使用ildasm.exe探索程序集 24
1.11 使用reflector来查看程序集 26
1.12 部署.net运行库 27
1.13 .net的平台无关性 27
1.14 小结 28
第2章 构建c#应用程序 30
2.1 .net framework 4 sdk的作用 30
2.2 用csc.exe构建c#应用程序 31
译者序回到顶部↑
应用程序开发的目标始终如一,就是在最短时间内制作出最好的软件。当今最流行的快速开发平台是什么,毫无疑问,是微软公司的.NET Framework。经过近10年的发展,微软的.NET已经变得非常庞大和成熟,而且.NET发展的步伐越来越快。
2002年年初,微软发布了Visual Studio .NET 2002开发工具,也带来了.NET框架的第一个版本1.0。2003年春天,微软发布了Visual Studio .NET 2003以及.NET Framework 1.1。尽管只是1.1,但是.NET Framework 1.1比1.0多了几项重大更新,例如对移动设备的支持(精简版.NET)和对ODBC/ Oracle数据库的支持。2005年年底,.NET Framework 2.0随着Visual Studio 2005以及 SQL Server 2005一起发布。无论是Visual Studio 2005、C# 2.0还是ASP.NET 2.0,在易用性、安全性等方面都比前辈优秀很多。C# 2.0中的泛型、迭代器、可空类型、匿名方法、分部类等特性确实给了我们很多方便。2006年年底,微软随Vista操作系统推出了.NET Framework 3.0。.NET Framework 3.0在.NET Framework 2.0的基础上增加了几个重要组件:WCF、WPF、WF和WCS(本书后面会对WCF、WPF和WF进行比较详细的介绍)。
WCF:Windows Communication Foundation,最完整的集成化通信管理框架。WCF编程模型把Web服务、.NET远程技术、分布式事务和消息队列统一到单个面向服务的编程模型中,从而实现了真正意义上的分布式计算。
WPF:Windows Presentation Foundation,最华丽的界面技术框架。WPF提供了一种一致的方案来构建编程模型,并且支持使用更为丰富的控件和设计技术来开发Windows程序。
WF:Windows Workflow Foundation,最灵活和最强大的工作流平台。WF是微软用来定义、执行和管理工作流的编程模型、引擎和工具的总称。
WCS:Windows CardSpace,最安全的个人数字标识解决方案。
2007年年底,微软发布了Visual Studio 2008以及.NET Framework 3.5。在.NET Framework 3.0的基础上,3.5又新增了一些程序集,并引入了LINQ、ASP.NET AJAX等功能。
C# 3.0:提供了隐式类型变量、自动属性、扩展方法、对象初始化语法、Lambda表达式、匿名方法、分部方法等新特性,其实几乎所有的新特性都是因LINQ而生的。
LINQ:语言集成查询,官方组件包括LINQ to SQL、LINQ to XML、LINQ to DataSet等。当然,还有很多第三方公司或个人推出的LINQ to XXX。可以通过这些组件使用统一的查询语言对各种基于磁盘、网络甚至服务的数据源进行查询。
ASP.NET AJAX:其实ASP.NET AJAX最早并不是在.NET Framework 3.5中出现的,只不过.NET Framework 3.5集成了ASP.NET AJAX。
关于.NET Framework 3.0中四大技术的扩展,我们也可以认为.NET Framework 3.5提供了WCF/ WPF/WF/WCS的2.0版本。
2010年4月,微软又发布了Visual Studio 2010和.NET Framework 4,这又是一个里程碑式的版本。如果说C# 3.0中的大多数特性都是语法糖,那么C# 2010则建立在全新的CLR基础之上。
DLR:Dynamic Language Runtime(动态语言运行时)是.NET 4的重要组成部分,它为C#这门静态强类型语言提供了类似Smalltalk、LISP、Ruby和Python那样的动态特性。
TPL:在多核计算机早已普及的今天,充分利用每一个CPU可以显著提升程序的性能,是任何一个编程语言都不能忽视的功能。Task Parallel Library(任务并行库)应景而生,你不必操作线程,就可以编写细粒度、高可扩展性的并行程序。使用PLINQ还可以并行地进行LINQ查询。
改善COM互操作性:动态特性、可选参数、命名参数、索引属性以及PIA的诞生,都大大简化了与传统COM组件的互操作。
WCF、WPF和WF都升级到了4.0版本。
本书分8个部分,从最底层的CLR开始,到上层C#语言的各种结构,再到.NET Framework中提供的各种API,一直到应用层面的WCF、WF、WPF、ASP.NET等,甚至是.NET的一些互操作性都进行了全面的介绍。
感谢本书的作者Andrew Troelsen先生,他为我们带来这样一本含大量精彩篇章的著作。本书是在前几个版本的中文版基础上翻译完成的。第三版主要由王少葵、张大磊、朱晔、范睿和金雪根(思归)翻译,第四版的补充翻译由朱晔、肖逵和张大磊完成,本版的补充翻译由姚琪琳完成。特别感谢图灵公司编辑王军花、丁晓昀等的辛勤劳动。另外也感谢很多在翻译过程中给过我们支持的朋友和网友,请原谅不能一一列出他们的名字。
真诚地希望我们为这本书付出的劳动没有辜负大家的期望,希望各位读者朋友在阅读后能够对.NET Framework和C#更了解。由于时间仓促,且译者水平有限,书中难免会出现一些问题或疏漏,请各位读者不吝赐教,我们非常感谢读者的任何批评和反馈,并会基于此作出更正与改进。谢谢!
2002年年初,微软发布了Visual Studio .NET 2002开发工具,也带来了.NET框架的第一个版本1.0。2003年春天,微软发布了Visual Studio .NET 2003以及.NET Framework 1.1。尽管只是1.1,但是.NET Framework 1.1比1.0多了几项重大更新,例如对移动设备的支持(精简版.NET)和对ODBC/ Oracle数据库的支持。2005年年底,.NET Framework 2.0随着Visual Studio 2005以及 SQL Server 2005一起发布。无论是Visual Studio 2005、C# 2.0还是ASP.NET 2.0,在易用性、安全性等方面都比前辈优秀很多。C# 2.0中的泛型、迭代器、可空类型、匿名方法、分部类等特性确实给了我们很多方便。2006年年底,微软随Vista操作系统推出了.NET Framework 3.0。.NET Framework 3.0在.NET Framework 2.0的基础上增加了几个重要组件:WCF、WPF、WF和WCS(本书后面会对WCF、WPF和WF进行比较详细的介绍)。
WCF:Windows Communication Foundation,最完整的集成化通信管理框架。WCF编程模型把Web服务、.NET远程技术、分布式事务和消息队列统一到单个面向服务的编程模型中,从而实现了真正意义上的分布式计算。
WPF:Windows Presentation Foundation,最华丽的界面技术框架。WPF提供了一种一致的方案来构建编程模型,并且支持使用更为丰富的控件和设计技术来开发Windows程序。
WF:Windows Workflow Foundation,最灵活和最强大的工作流平台。WF是微软用来定义、执行和管理工作流的编程模型、引擎和工具的总称。
WCS:Windows CardSpace,最安全的个人数字标识解决方案。
2007年年底,微软发布了Visual Studio 2008以及.NET Framework 3.5。在.NET Framework 3.0的基础上,3.5又新增了一些程序集,并引入了LINQ、ASP.NET AJAX等功能。
C# 3.0:提供了隐式类型变量、自动属性、扩展方法、对象初始化语法、Lambda表达式、匿名方法、分部方法等新特性,其实几乎所有的新特性都是因LINQ而生的。
LINQ:语言集成查询,官方组件包括LINQ to SQL、LINQ to XML、LINQ to DataSet等。当然,还有很多第三方公司或个人推出的LINQ to XXX。可以通过这些组件使用统一的查询语言对各种基于磁盘、网络甚至服务的数据源进行查询。
ASP.NET AJAX:其实ASP.NET AJAX最早并不是在.NET Framework 3.5中出现的,只不过.NET Framework 3.5集成了ASP.NET AJAX。
关于.NET Framework 3.0中四大技术的扩展,我们也可以认为.NET Framework 3.5提供了WCF/ WPF/WF/WCS的2.0版本。
2010年4月,微软又发布了Visual Studio 2010和.NET Framework 4,这又是一个里程碑式的版本。如果说C# 3.0中的大多数特性都是语法糖,那么C# 2010则建立在全新的CLR基础之上。
DLR:Dynamic Language Runtime(动态语言运行时)是.NET 4的重要组成部分,它为C#这门静态强类型语言提供了类似Smalltalk、LISP、Ruby和Python那样的动态特性。
TPL:在多核计算机早已普及的今天,充分利用每一个CPU可以显著提升程序的性能,是任何一个编程语言都不能忽视的功能。Task Parallel Library(任务并行库)应景而生,你不必操作线程,就可以编写细粒度、高可扩展性的并行程序。使用PLINQ还可以并行地进行LINQ查询。
改善COM互操作性:动态特性、可选参数、命名参数、索引属性以及PIA的诞生,都大大简化了与传统COM组件的互操作。
WCF、WPF和WF都升级到了4.0版本。
本书分8个部分,从最底层的CLR开始,到上层C#语言的各种结构,再到.NET Framework中提供的各种API,一直到应用层面的WCF、WF、WPF、ASP.NET等,甚至是.NET的一些互操作性都进行了全面的介绍。
感谢本书的作者Andrew Troelsen先生,他为我们带来这样一本含大量精彩篇章的著作。本书是在前几个版本的中文版基础上翻译完成的。第三版主要由王少葵、张大磊、朱晔、范睿和金雪根(思归)翻译,第四版的补充翻译由朱晔、肖逵和张大磊完成,本版的补充翻译由姚琪琳完成。特别感谢图灵公司编辑王军花、丁晓昀等的辛勤劳动。另外也感谢很多在翻译过程中给过我们支持的朋友和网友,请原谅不能一一列出他们的名字。
真诚地希望我们为这本书付出的劳动没有辜负大家的期望,希望各位读者朋友在阅读后能够对.NET Framework和C#更了解。由于时间仓促,且译者水平有限,书中难免会出现一些问题或疏漏,请各位读者不吝赐教,我们非常感谢读者的任何批评和反馈,并会基于此作出更正与改进。谢谢!
前言回到顶部↑
本书历经了多个版本,第1版大约在2001年夏天几乎与.NET 1.0 Beta 2同时推出。从那以后,我一直感到非常幸福,心中充满了感激之情,因为我的书得到了出版社尤其是读者们的好评。这些年来,它曾入围Jolt大奖提名(可惜最后没得奖……)和2003年Referenceware编程类图书卓越大奖(这次我赢了?太酷了!)。
更重要的是,很高兴收到全世界读者发来的邮件。他们告诉我本书对他们的事业有一定的帮助,与他们交谈的感觉太棒了。事实上,本书比过去的任何版本都要好。感谢那些发来改进建议、指出排印错别以及其他错误的读者。
一些大学曾经或正在使用本书,并且本书也是计算机科学领域众多本科和研究生的必读书,对此,我受宠若惊。
对于出版商、读者和教授们,我只能说谢谢并祝你编程愉快!
无论如何,自从本书第1版面市,我一直努力工作,以使本书内容和.NET平台的版本保持一致。现在你手中拿的是第5版,其中涵盖了C# 2010编程语言和.NET 4平台的新特性,包括DLR(Dynamic Language Runtime,动态语言运行时)、TPL(Task Parallel Library,任务并行库)、PLINQ(Parallel LINQ,并行LINQ)、ADO.NET Entity Framework(EF,实体框架),以及一些细微的(但很有用的)更新,如C# 2010命名参数、C# 2010可选参数、Lazy[T]类类型等。
除了涵盖所有这些新特性外,本书还为你打造了坚实的C#语言基础,介绍了面向对象编程(OOP)的核心、程序集配置、数据库访问(ADO.NET),以及构建桌面GUI应用程序、Web应用程序和(在其他话题中穿插介绍的)分布式系统的过程。
与前几个版本一样,这一版用友好且平和的方式描述了C#编程语言和.NET基础类库。同样,新版本继续重点阐述构建软件解决方案所需的内容,而不会在深奥且很少有人关心的内容上浪费时间。
你和我,我们是一个团队
技术作家所面对的是一群苛刻的读者(我知道,因为我就是他们中的一员)。无论使用什么平台(例如.NET、Java和COM),对部门、公司、客户和任何课题来说,构建软件解决方案都是非常复杂而且有针对性的事情。可能你在电子出版行业工作,或者为政府开发系统,或者是在科研机构或军队的某个部门工作。就我自己而言,我开发过儿童教育软件(Oregon Trail、Amazon Trail等游戏软件)、各种n层系统以及许多医疗和金融行业的项目。你工作时编写的代码和我编写的代码百分之百是不同的(除非我们恰巧以前在一起工作)。
因此,在这本书中,我特意避免选择那些和具体行业紧密相关的例子,而是用与行业无关的例子来解释C#、OOP、CLR和.NET 4基础类库。我不使用诸如数据填充表格、薪水计算或者其他的一些例子,而是坚持用与我们都有联系的主题:汽车,另外再加上几何结构和雇员薪水系统作为补充示例。你不用担心会有什么陌生的背景知识。
我要做的是尽最大可能解释C#编程语言和.NET平台的核心内容。同时,我会尽可能把进一步学习本书的工具和策略提供给你。
你要做的是理解这些内容并将其付诸于具体编程工作中。我很清楚,你的项目可能与具有友好昵称的汽车(比如,BMW的Zippy和Yugo的Clunker)根本无关,但是所用到的知识是相通的。
放心,只要理解了这本书中的概念,你便能够很好地构建一个和实际情况紧密相关的.NET解决方案了。
本书内容
本书从逻辑上分为8个部分,每个部分包含一些相关联的章节。如果读过本书的前几版,你很快就会发现很多变化。例如,我不再用一章单独介绍C#语言的新特性,而是将这些新特性自然融入相关的章节。此外,根据读者的反馈,我扩展了WPF相关的内容。下面先按部分,再按章来分解本书。
第一部分:C#与.NET平台
第一部分的目的在于让你初步适应并了解.NET平台以及在构造.NET应用中用到的各种开发工具(其中很多是开源的)。同时,你也会学习到C#编程语言和.NET类型系统的基本知识。
第1章:.NET之道
这一章讲述本书其余部分的脉络。我们将首先回顾传统Windows开发领域,并阐述它们的缺点。然而,该章的主要目的是介绍许多.NET相关的构建块,如CLR(公共语言运行库)、CTS(公共类型系统)、CLS(公共语言规范)以及基础类库。该章让你对C#编程语言和.NET程序集格式有一个初步了解,同时概述了.NET平台的平台无关性(附录B将会详细介绍这个主题)。
第2章:构建C#应用程序
更重要的是,很高兴收到全世界读者发来的邮件。他们告诉我本书对他们的事业有一定的帮助,与他们交谈的感觉太棒了。事实上,本书比过去的任何版本都要好。感谢那些发来改进建议、指出排印错别以及其他错误的读者。
一些大学曾经或正在使用本书,并且本书也是计算机科学领域众多本科和研究生的必读书,对此,我受宠若惊。
对于出版商、读者和教授们,我只能说谢谢并祝你编程愉快!
无论如何,自从本书第1版面市,我一直努力工作,以使本书内容和.NET平台的版本保持一致。现在你手中拿的是第5版,其中涵盖了C# 2010编程语言和.NET 4平台的新特性,包括DLR(Dynamic Language Runtime,动态语言运行时)、TPL(Task Parallel Library,任务并行库)、PLINQ(Parallel LINQ,并行LINQ)、ADO.NET Entity Framework(EF,实体框架),以及一些细微的(但很有用的)更新,如C# 2010命名参数、C# 2010可选参数、Lazy[T]类类型等。
除了涵盖所有这些新特性外,本书还为你打造了坚实的C#语言基础,介绍了面向对象编程(OOP)的核心、程序集配置、数据库访问(ADO.NET),以及构建桌面GUI应用程序、Web应用程序和(在其他话题中穿插介绍的)分布式系统的过程。
与前几个版本一样,这一版用友好且平和的方式描述了C#编程语言和.NET基础类库。同样,新版本继续重点阐述构建软件解决方案所需的内容,而不会在深奥且很少有人关心的内容上浪费时间。
你和我,我们是一个团队
技术作家所面对的是一群苛刻的读者(我知道,因为我就是他们中的一员)。无论使用什么平台(例如.NET、Java和COM),对部门、公司、客户和任何课题来说,构建软件解决方案都是非常复杂而且有针对性的事情。可能你在电子出版行业工作,或者为政府开发系统,或者是在科研机构或军队的某个部门工作。就我自己而言,我开发过儿童教育软件(Oregon Trail、Amazon Trail等游戏软件)、各种n层系统以及许多医疗和金融行业的项目。你工作时编写的代码和我编写的代码百分之百是不同的(除非我们恰巧以前在一起工作)。
因此,在这本书中,我特意避免选择那些和具体行业紧密相关的例子,而是用与行业无关的例子来解释C#、OOP、CLR和.NET 4基础类库。我不使用诸如数据填充表格、薪水计算或者其他的一些例子,而是坚持用与我们都有联系的主题:汽车,另外再加上几何结构和雇员薪水系统作为补充示例。你不用担心会有什么陌生的背景知识。
我要做的是尽最大可能解释C#编程语言和.NET平台的核心内容。同时,我会尽可能把进一步学习本书的工具和策略提供给你。
你要做的是理解这些内容并将其付诸于具体编程工作中。我很清楚,你的项目可能与具有友好昵称的汽车(比如,BMW的Zippy和Yugo的Clunker)根本无关,但是所用到的知识是相通的。
放心,只要理解了这本书中的概念,你便能够很好地构建一个和实际情况紧密相关的.NET解决方案了。
本书内容
本书从逻辑上分为8个部分,每个部分包含一些相关联的章节。如果读过本书的前几版,你很快就会发现很多变化。例如,我不再用一章单独介绍C#语言的新特性,而是将这些新特性自然融入相关的章节。此外,根据读者的反馈,我扩展了WPF相关的内容。下面先按部分,再按章来分解本书。
第一部分:C#与.NET平台
第一部分的目的在于让你初步适应并了解.NET平台以及在构造.NET应用中用到的各种开发工具(其中很多是开源的)。同时,你也会学习到C#编程语言和.NET类型系统的基本知识。
第1章:.NET之道
这一章讲述本书其余部分的脉络。我们将首先回顾传统Windows开发领域,并阐述它们的缺点。然而,该章的主要目的是介绍许多.NET相关的构建块,如CLR(公共语言运行库)、CTS(公共类型系统)、CLS(公共语言规范)以及基础类库。该章让你对C#编程语言和.NET程序集格式有一个初步了解,同时概述了.NET平台的平台无关性(附录B将会详细介绍这个主题)。
第2章:构建C#应用程序
【插图】








点击看大图







加载中...

