C#与.NET 3.5高级程序设计(第4版)

分類: 图书,计算机/网络,程序设计,C C++ C# VC VC++,
作者: (美)特罗尔森 著,朱晔 等译
出 版 社: 人民邮电出版社
出版时间: 2009-3-1字数:版次: 1页数: 1107印刷时间:开本: 大16开印次:纸张:I S B N : 9787115196910包装: 平装编辑推荐
Amazon超级畅销书,全面涵盖C#3.0,用IL深入揭示各语言特性,深度剖析NET3.5平台,让你知其然,更知其所以然,国内多位微软MVP联手翻译。
C#语言作为.NET平台上的第一语言,已经成为目前功能最强大的通用语言之一。
本书是被誉为“C#圣经”的经典巨著,因语言生动流畅、剖析深入、涵盖全面而广受推崇,畅销不衰。曾经获得Referenceware编程图书大奖,并入选Jolt大奖提名。书中探讨了C#语言和.NET,S'的各种特性。包括重载运算符、指针、泛型等高级功能币aClL、远程处理、Windows Forms、ASP.NET、AD0.NET等技术。不少概念都通过IL代码透视其背后的本质。使你知其然,更知其所以然。新版更透彻阐述TC#3.0新功能(包括自动属性、扩展方法、匿名类型等)和.NET 3.5的最新特性(包括LINQ、WPF、WCF和WF等相关技术!附录中包括TCOM与NET的互操作和Mon0开发等主题。
与同类图书不同。全书由世界级C#专家Andrew Troelsen以一人之力完成,因此写作思路和布局谋篇都独具匠心。中文版由国内多位微软MVP联手译出,强大的译者阵容有力地保证了这部权威原著原汁原味的重现。
“哇,这本书太棒了!对NET3.5和CLR的阐释非常深入。它已经成为我的头号参考书。强烈推荐给所有NET程序员”。
——Jelf Wilcox 微软 NET开发团队资深工程师
“TroeIsen大师王者归来了!C#程序员可以分为两类:读过TroeIsen书的。和没有读过的,要想真正掌握C#和NET平台,本书千万不可错过!”
——NET Developer's Journal
作者简介:
Andrew Troelsen世界级c#专家,微软VisuaI C#MVP。他是著名的微软技术咨询企业Intertech的合伙人和副总裁,该公司的客户包括微软、霍尼韦尔、美国宇航局等。他曾为MSDN网站和MacTech网站撰写了有关各种操作系统平台上.NET技术的文章,并经常在业界主要技术会议上发表f演讲和开设技术讲座。除本书外,他还撰写了COM and Net interoperabity和Visual Basic NET and the NET Platform An Advanced Guide等十多部NET技术方面的著作。
内容简介
本书是C#领域久负盛名的经典著作,深入全面地叙述了C#编程语言和.NET平台核心,并以大量示例剖析相关概念。书中介绍了C#的各种语言构造、.NET 2.0的类、核心API、公共中间语言(CIL)、动态程序集和ASP.NET扩展等内容;同时也介绍了.NET 3.0和.NET 3.5中新的编程API,包括WPF 、WCF和WF 的功能;另外,还介绍了最新的C# 3.0编程语言、LINQ编程技术、COM与.NET 的互操作性以及平台无关的.NET开发。
本书由微软C# MVP Andrew Troelsen编写,历经多次修订,适合各层次.NET开发人员阅读。
作者简介
Andrew Troelsen世界级c#专家,微软VisuaI C#MVP。他是著名的微软技术咨询企业Intertech的合伙人和副总裁,该公司的客户包括微软、霍尼韦尔、美国宇航局等。他曾为MSDN网站和MacTech网站撰写了有关各种操作系统平台上.NET技术的文章,并经常在业界主要技术会议上发表f演讲和开设技术讲座。除本书外,他还撰写了COM and Net interoperabity和Visual Basic NET and the NET Platform An Advanced Guide等十多部NET技术方面的著作。
目录
第一部分C#和.NET平台简介
第1章NET之道
1.1NET之前的世界
1.2NET解决方案
1.3NET平台构造块(CLR、CTS和CLS)简介
1.4其他支持.NET的编程语言
1.5NET程序集概览
1.6CTS
1.7CLS
1.8CLR
1.9程序集/命名空间/类型的区别
1.10使用ildasm.exe探索程序集
1.11使用Lutz Roeder的Reflector来查看程序集
1.12部署.NET运行库
1.13NET的平台无关性
1.14小结
第2章构建C#应用程序
2.1NET Framework 3.5 SDK的作用
2.2用csc.exe构建C#应用程序
2.3使用TextPad构建.NET应用程序
2.4使用Notepad++构建.NET应用程序
2.5使用SharpDevelop构建.NET应用程序
2.6使用Visual C# 2008 Express构建.NET应用程序
2.7使用Visual Studio 2008构建.NET应用程序
2.8其他.NET开发工具
2.9小结
第二部分C#核心编程结构
第3章C#核心编程结构Ⅰ
3.1一个简单的C#程序
3.2有趣的题外话:System.Environment类的其他成员
3.3System.Console类
3.4系统数据类型和C#简化符号
3.5System.String数据类型
3.6窄化和宽化数据类型转换
3.7C#迭代结构
3.8条件结构和关系/相等运算符
3.9小结
第4章C#核心编程结构Ⅱ
4.1方法和参数修饰符
4.2成员重载
4.3C#中的数组操作
4.4枚举类型
4.5结构类型
4.6值类型和引用类型
4.7值类型和引用类型:最后的细节
4.8C#可空类型
4.9小结
第5章定义封装的类类型
5.1C#类类型
5.2类构造函数
5.3this关键字的作用
5.4static关键字
5.5定义OOP的支柱
5.6C#访问修饰符
5.7第一个支柱:C#的封装支持
5.8常量数据
5.9只读字段
5.10C#的分部类型
5.11通过XML生成C#源代码的文档
5.12查看劳动成果
5.13小结
第6章继承和多态
6.1继承的基本机制
6.2回顾Visual Studio类关系图
6.3第二个支柱:继承
6.4包含/委托编程
6.5第三个支柱:C#的多态支持
6.6基类/派生类的转换规则
6.7超级父类:System.Object
6.8小结
第7章结构化异常处理
7.1错误、bug与异常
7.2NET异常处理的作用
7.3最简单的例子
7.4配置异常的状态
7.5系统级异常(System.SystemException)
7.6应用程序级异常(System.ApplicationException)
7.7处理多个异常
7.8finally块
7.9谁在引发什么异常
7.10未处理异常的后果
7.11使用Visual Studio调试未处理的异常
7.12小结
第8章对象的生命周期
8.1类、对象和引用
8.2对象生命周期的基础
8.3应用程序根的作用
8.4对象的代
8.5System.GC类型
8.6构建可终结对象
8.7构建可处置对象
8.8构建可终结类型和可处置类型
8.9小结
第三部分C#高级编程结构
第9章接口
9.1接口类型
9.2定义自定义接口
9.3实现接口
9.4在对象级别调用接口成员
9.5接口作为参数
9.6接口作为返回值
9.7接口类型数组
9.8使用Visual Studio 2008实现接口
9.9通过显式接口实现解决命名冲突
9.10定义接口层次结构
9.11构建可枚举类型(IEnumerable和IEnumerator)
9.12构建可克隆的对象(ICloneable)
9.13构建可比较的对象(IComparable)
9.14回调接口
9.15小结
第10章集合与泛型
10.1System.Collections命名空间的接口
10.2System.Collections命名空间的类类型
10.3System.Collections.Specialized命名空间
10.4装箱、拆箱以及和System.Object的关系
10.5类型安全和强类型集合问题
10.6System.Collections.Generic命名空间
10.7创建自定义泛型方法
10.8创建泛型结构和类
10.9创建自定义泛型集合
10.10创建泛型基类
10.11创建泛型接口
10.12小结
第11章委托、事件和Lambda
11.1NET委托类型
11.2使用C#定义委托
11.3System.MulticastDelegate与System.Delegate基类
11.4最简单的委托示例
11.5使用委托改造Car类型
11.6更复杂的委托示例
11.7委托协变
11.8创建泛型委托
11.9C#事件
11.10泛型EventHandlerT委托
11.11C#匿名方法
11.12方法组转换
11.13C# 3.0 Lambda运算符
11.14小结
第12章索引器、运算符和指针
12.1索引器方法
12.2运算符重载
12.3自定义类型转换
12.4指针类型
12.5C#预处理指令
12.6小结
第13章C# 3.0的语言功能
13.1隐式类型局部变量
13.2自动属性
13.3扩展方法
13.4分部方法
13.5对象初始化器
13.6匿名类型
13.7小结
第14章LINQ
14.1LINQ的作用
14.2LINQ查询表达式初览
14.3LINQ和泛型集合
14.4LINQ和非泛型集合
14.5查询运算符的内部表示
14.6LINQ查询运算符
14.7LINQ查询
14.8小结
第四部分使用.NET程序集编程
第15章.NET程序集入门
15.1定义自定义命名空间
15.2.NET程序集的作用
15.3.NET程序集的格式
15.4构建和使用单文件程序集
15.5构建和使用多文件程序集
15.6私有程序集
15.7共享程序集
15.8使用共享程序集
15.9配置共享程序集
15.10GAC的内部结构
15.11发行者策略程序集
15.12codeBase元素
15.13System.Configuration命名空间
15.14机器配置文件
15.15小结
第16章类型反射、晚期绑定和基于特性的编程
16.1类型元数据的必要性
16.2反射
16.3构建自定义的元数据查看器
16.4动态加载程序集
16.5反射共享程序集
16.6晚期绑定
16.7特性编程
16.8构建自定义特性
16.9程序集级别(和模块级别)特性
16.10使用早期绑定反射特性
16.11使用晚期绑定反射特性
16.12反射、晚期绑定和自定义特性的使用背景
16.13构建可扩展的应用程序
16.14小结
第17章进程、应用程序域和对象上下文
17.1回顾传统的Win32进程
17.2NET平台下与进程进行交互
17.3NET应用程序域
17.4对象上下文边界
17.5进程、应用程序域和上下文小结
17.6小结
第18章构建多线程应用程序
18.1进程、应用程序域、上下文及线程之间的关系
18.2NET委托的简短回顾
18.3委托的异步性
18.4异步调用方法
18.5System.Threading命名空间
18.6System.Threading.Thread类
18.7以编程方式创建次线程
18.8并发问题
18.9使用Timer Callback编程
18.10CLR线程池
18.11BackgroundWorker组件的作用
18.12小结
第19章CIL和动态程序集的作用
19.1CIL编程的本质
19.2CIL指令、特性和操作码
19.3入栈和出栈:CIL基于栈的本质
19.4正反向工程
19.5CIL指令和特性
19.6NET基类库、C#和CIL数据类型的映射
19.7在CIL中定义成员
19.8剖析CIL操作码
19.9使用CIL构建.NET程序集
19.10动态程序集
19.11小结
第五部分.NET基类库简介
第20章文件输入输出和隔离存储
20.1研究System.IO命名空间
20.2Directory(Info)和File(Info)类型
20.3使用DirectoryInfo类型
20.4使用Directory类型
20.5使用DriveInfo类类型
20.6使用FileInfo类
20.7使用File类型533
20.8Stream抽象类535
20.9使用StreamWriter和StreamReader类型
20.10使用StringWriter和StringReader
20.11使用BinaryWriter和BinaryReader
20.12以编程方式“观察”文件
20.13实现异步文件I/O操作
20.14隔离存储的作用
20.15代码访问安全入门
20.16隔离存储概览
20.17使用IsolatedStorageFile获取存储
20.18实战隔离存储:ClickOnce部署
20.19小结
第21章对象序列化
21.1对象序列化
21.2为序列化配置对象
21.3选择序列化格式化程序
21.4使用BinaryFormatter序列化对象
21.5使用SoapFormatter序列化对象
21.6使用XmlSerializer序列化对象
21.7序列化对象集合
21.8自定义序列化过程
21.9小结
第22章ADO.NET之一:连接层
22.1ADO.NET高层次定义
22.2ADO.NET的数据提供程序
22.3其他的ADO.NET命名空间
22.4System.Data命名空间的类型
22.5使用接口抽象数据提供程序
22.6创建AutoLot数据库
22.7ADO.NET 数据提供程序工厂模型
22.8ADO.NET的连接式访问
22.9使用数据读取器
22.10构建可重用的数据访问库
22.11创建控制台UI前端
22.12使用SqlCommand进行异步数据访问
22.13数据库事务
22.14小结
第23章ADO.NET之二:断开连接层
23.1ADO.NET断开连接层
23.2DataSet的作用
23.3使用DataColumn
23.4使用DataRow
23.5使用DataTable
23.6将DataTable对象绑定到用户界面
23.7使用数据适配器填充DataSet/ DataTable
23.8重访AutoLotDAL.dll
23.9切换多表DataSet对象
23.10Visual Studio 2008的数据访问工具
23.11从UI层解耦自动生成的代码
23.12小结
第24章LINQ API编程
24.1LINQ to ADO.NET的作用
24.2使用LINQ to DataSet编程
24.3使用LINQ to SQL编程
24.4使用sqlmetal.exe生成实体类
24.5使用Visual Studio 2008建立实体类
24.6使用LINQ to XML操作XML文档
24.7在内存文档中导航
24.8小结
第25章WCF
25.1各种分布式计算API
25.2WCF的作用
25.3WCF核心程序集
25.4Visual Studio WCF项目模板
25.5WCF应用程序的基本构成
25.6WCF的ABC
25.7构建WCF服务
25.8承载WCF服务
25.9构建WCF客户端应用程序
25.10使用WCF服务库项目模板
25.11以Windows服务承载WCF服务
25.12异步调用服务
25.13定义WCF数据契约
25.14小结
第26章WF
26.1定义业务流程
26.2WF的构建块
26.3WF程序集、命名空间和项
26.4构建一个启用工作流的简单应用
26.5WF引擎承载代码
26.6在工作流中调用Web服务
26.7构建可重用的WF代码库
26.8关于自定义活动的简要说明
26.9小结
第六部分桌面用户界面
第27章Windows Forms编程
27.1Windows Forms 命名空间
27.2创建一个简单的Windows Forms 程序(不用IDE)
27.3Visual Studio Windows Forms项目模板
27.4剖析Form
27.5响应鼠标活动
27.6响应键盘活动
27.7设计对话框
27.8通过GDI+呈现图形数据
27.9创建一个完整的Windows Forms应用程序
27.10小结
第28章WPF和XAML
28.1WPF背后的动机
28.2各种形式的WPF应用程序
28.3WPF程序集
28.4创建(不使用XAML的)WPF应用程序
28.5Application类型的其他细节
28.6Window类型的其他细节
28.7构建(XAML相关的)WPF应用程序
28.8将标记转换为.NET程序集
28.9使用代码隐藏文件实现的关注点的分离
28.10XAML语法
28.11使用Visual Studio 2008构建WPF应用程序
28.12在运行时处理XAML:SimpleXaml- Pad.exe
28.13微软Expression Blend的作用
28.14小结
第29章使用WPF控件编程
29.1WPF控件库概述
29.2使用XAML声明控件
29.3依赖属性的作用
29.4路由事件
29.5使用Button类型
29.6使用CheckBoxe和RadioButton
29.7使用ListBox和ComboBox类型
29.8使用文本区
29.9使用面板进行内容布局
29.10使用嵌套面板创建窗口框架
29.11WPF控件命令
29.12WPF数据绑定模型
29.13使用IValueConverter进行数据转换
29.14绑定到自定义对象
29.15将UI元素绑定到XML文档
29.16小结
第30章WPF 2D图形呈现、资源和主题
30.1WPF图形呈现服务
30.2探究Shape派生类
30.3使用WPF画刷
30.4使用WPF画笔
30.5探究Drawing派生类
30.6UI变换的功能
30.7WPF动画服务
30.8WPF的资源体系
30.9为WPF控件定义应用样式
30.10使用模板改变控件的UI
30.11小结
第七部分使用ASP.NET构建Web应用程序
第31章构建ASP.NET网页
31.1HTTP的作用
31.2Web应用程序和Web服务
31.3HTML的作用
31.4客户端脚本的作用
31.5提交表单数据(GET和POST)
31.6构建传统的ASP页面
31.7传统ASP相关问题
31.8ASP.NET命名空间
31.9ASP.NET网页代码模型
31.10ASP.NET站点目录结构细节
31.11ASP.NET页面编译周期
31.12页面类型的继承链
31.13与传入的HTTP请求交互
31.14与输出HTTP响应交互
31.15ASP.NET网页的生命周期
31.16Web.config文件的作用
31.17小结
第32章ASP.NET Web控件、主题和母版页
32.1Web控件的本质
32.2System.Web.UI.Control类型
32.3System.Web.UI.WebControls.WebControl类型
32.4ASP.NET Web控件的类别
32.5构建功能丰富的ASP.NET站点
32.6验证控件的作用
32.7使用主题
32.8使用HTML表格布局控件
32.9小结
第33章ASP.NET状态管理技术
33.1状态问题
33.2ASP.NET状态管理技术
33.3ASP.NET视图状态的作用
33.4Global.asax文件的作用
33.5应用程序状态与会话状态差别
33.6使用应用程序缓存
33.7维护会话数据
33.8cookie
33.9sessionState元素的作用
33.10ASP.NET用户配置API
33.11小结
第八部分附录
附录ACOM与.NET的互操作性
A.1NET互操作的研究范围
A.2NET调用COM互操作的简单示例
A.3NET互操作程序集
A.4运行库可调用包装
A.5COM IDL的作用
A.6使用类型库创建互操作程序集
A.7创建一个更复杂的COM服务
A.8互操作程序集
A.9在COM中使用.NET
A.10CCW的作用
A.11NET类接口的作用
A.12构建.NET类型
A.13生成类型库并注册.NET类型
A.14导出类型信息
A.15创建一个Visual Basic 6.0的测试客户端
A.16小结
附录B使用Mono进行平台无关的.NET开发
B.1NET的平台无关性
B.2获取和安装Mono
B.3Mono开发工具
B.4使用Mono创建.NET应用程序
B.5推荐学习
B.6小结
索引
书摘插图
第一部分C#和.NET平台简介
第1章NET之道
大约每隔几年,当代的程序员为了跟上当今新技术的步伐,必须经历一次知识的移植和更新。
八语言(c++、Visual Basic 6.0和Java)、框架(OWL、MFC、ATL和STL)、架构(COM、CORBA和IIEJB)和API(如.NET的Windows Fonns和GDI+库)等曾被吹捧为软件开发的“银弹∽’,但最终都在一些更好的或至少是更新的东西面前黯然失色。不管你在进行知识自我更新时遇到什么挫折,这都是不可避免的。本书要研究的是.NET平台和C#编程语言,这正是微软公司顺应当前软件开发大趋势而提供的最新技术。
本章的目的是对本书其余部分所涉及的各个方面做概念性的描述。最开始将高层次地讨论一些.NET相关主题,如程序集、CIL(公共中间语言)和JIT(just—in-time,即时)编译。接下来,除了预览C#语言的一些主要功能之外,还将会讲述.NET FraIrlework不同方面之间的关系,例如CLR(公共语言运行库)、CTS(公共类型系统)和ICLS(公共语言规范)。
本章同时还会研究由.NET基类库提供的功能,基类库有时缩写为BCL或FCL(即框架类库)。本章最后概述.NET平台的语言无关性和平台无关性(别惊讶,NET并不局限于Windows操作系统)。当然,所有这些主题都将在本书其余部分做进一步的详细探讨。
……
