《C#与.NET3.5高级程序设计》PDF下载

  • 购买积分:28 如何计算积分?
  • 作  者:(美)AndrewTroelsen著;朱晔,肖逵,张大磊等译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115196910
  • 页数:1107 页
图书介绍:本书是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#和.NET平台简介 2

第1章 .NET之道 2

1.1 .NET之前的世界 2

1.2 .NET解决方案 4

1.3 .NET平台构造块(CLR、 CTS和CLS )简介 5

1.4其他支持.NET的编程语言 7

1.5 .NET程序集概览 8

1.6 CTS 13

1.7 CLS 16

1.8 CLR 17

1.9程序集/命名空间/类型的区别 19

1.10使用ildasm.exe探索程序集 23

1.11使用Lutz Roeder的Reflector来查看程序集 24

1.12部署.NET运行库 25

1.13 .NET的平台无关性 25

1.14小结 26

第2章 构建C#应用程序 27

2.1 .NET Framework 3.5 SDK的作用 27

2.2用csc.exe构建C#应用程序 28

2.3使用TextPad构建.NET应用程序 32

2.4使用Notepad+++构建.NET应用程序 35

2.5使用SharpDevelop构建.NET应用程序 37

2.6使用Visual C# 2008 Express构建.NET应用程序 38

2.7使用Visual Studio 2008构建NET应用程序 40

2.8其他.NET开发工具 49

2.9小结 50

第二部分 C#核心编程结构 52

第3章 C#核心编程结构I 52

3.1一个简单的C#程序 52

3.2有趣的题外话:System.Environment类的其他成员 57

3.3 System.Console类 58

3.4系统数据类型和C#简化符号 61

3.5 System.String数据类型 67

3.6窄化和宽化数据类型转换 73

3.7 C#迭代结构 78

3.8条件结构和关系/相等运算符 79

3.9小结 81

第4章 C#核心编程结构 82

4.1方法和参数修饰符 82

4.2成员重载 86

4.3 C#中的数组操作 88

4.4枚举类型 93

4.5结构类型 97

4.6值类型和引用类型 99

4.7值类型和引用类型:最后的细节 105

4.8 C#可空类型 106

4.9小结 108

第5章 定义封装的类类型 109

5.1 C#类类型 109

5.2类构造函数 111

5.3 this关键字的作用 114

5.4 static关键字 118

5.5定义OOP的支柱 124

5.6 C#访问修饰符 127

5.7第一个支柱:C#的封装支持 129

5.8常量数据 136

5.9只读字段 137

5.10 C#的分部类型 138

5.11通过XML生成C#源代码的文档 139

5.12查看劳动成果 143

5.13小结 144

第6章 继承和多态 145

6.1继承的基本机制 145

6.2回顾Visual Studio类关系图 148

6.3第二个支柱:继承 149

6.4包含/委托编程 154

6.5第三个支柱:C#的多态支持 156

6.6基类/派生类的转换规则 166

6.7超级父类:System.Object 168

6.8小结 173

第7章 结构化异常处理 174

7.1错误、bug与异常 174

7.2 .NET异常处理的作用 174

7.3最简单的例子 176

7.4配置异常的状态 180

7.5系统级异常(System.SystemExcep-tion) 183

7.6应用程序级异常(System.Application-Exception) 184

7.7处理多个异常 188

7.8 finally块 191

7.9谁在引发什么异常 192

7.10未处理异常的后果 193

7.11使用Visual Studio调试未处理的异常 193

7.12小结 194

第8章 对象的生命周期 195

8.1类、对象和引用 195

8.2对象生命周期的基础 196

8.3应用程序根的作用 198

8.4对象的代 199

8.5 System.GC类型 200

8.6构建可终结对象 203

8.7构建可处置对象 205

8.8构建可终结类型和可处置类型 208

8.9小结 210

第三部分 C#高级编程结构 212

第9章 接口 212

9.1接口类型 212

9.2定义自定义接口 215

9.3实现接口 216

9.4在对象级别调用接口成员 218

9.5接口作为参数 220

9.6接口作为返回值 221

9.7接口类型数组 222

9.8使用Visual Studio 2008实现接口 222

9.9通过显式接口实现解决命名冲突 223

9.10定义接口层次结构 226

9.11构建可枚举类型(IEnumerable和IEnumerator) 228

9.12构建可克隆的对象(ICloneable) 233

9.13构建可比较的对象(IComparable) 237

9.14回调接口 241

9.15小结 244

第10章 集合与泛型 245

10.1 System.Collections命名空间的接口 245

10.2 System.Collections命名空间的类类型 247

10.3 System.Collections.Specialized命名空间 251

10.4装箱、拆箱以及和System.Object的关系 251

10.5类型安全和强类型集合问题 254

10.6 System.Collections.Generic命名空间 257

10.7创建自定义泛型方法 260

10.8创建泛型结构和类 262

10.9创建自定义泛型集合 264

10.10创建泛型基类 268

10.11创建泛型接口 269

10.12小结 270

第11章 委托、事件和Lambda 271

11.1 .NET委托类型 271

11.2使用C#定义委托 272

11.3 System.MulticastDelegate与System.Delegate基类 273

11.4最简单的委托示例 274

11.5使用委托改造Car类型 277

11.6更复杂的委托示例 281

11.7委托协变 285

11.8创建泛型委托 286

11.9 C#事件 288

11.10泛型EventHandler<T>委托 294

11.11 C#匿名方法 294

11.12方法组转换 297

11.13 C# 3.0 Lambda运算符 298

11.14小结 304

第12章 索引器、运算符和指针 305

12.1索引器方法 305

12.2运算符重载 309

12.3自定义类型转换 317

12.4指针类型 322

12.5 C#预处理指令 328

12.6小结 330

第13章 C# 3.0的语言功能 331

13.1隐式类型局部变量 331

13.2自动属性 335

13.3扩展方法 338

13.4分部方法 346

13.5对象初始化器 348

13.6匿名类型 352

13.7小结 356

第14章 LINQ 357

14.1 LINQ的作用 357

14.2 LINQ查询表达式初览 359

14.3 LINQ和泛型集合 364

14.4 LINQ和非泛型集合 365

14.5查询运算符的内部表示 366

14.6 LINQ查询运算符 369

14.7 LTNQ查询 374

14.8小结 376

第四部分 使用.NET程序集编程 378

第15章 .NET程序集入门 378

15.1定义自定义命名空间 378

15.2 .NET程序集的作用 383

15.3 .NET程序集的格式 384

15.4构建和使用单文件程序集 387

15.5构建和使用多文件程序集 395

15.6私有程序集 397

15.7共享程序集 402

15.8使用共享程序集 406

15.9配置共享程序集 407

15.10 GAC的内部结构 411

15.11发行者策略程序集 413

15.12 <codeBase>元素 414

15.13 System.Configuration命名空间 415

15.14机器配置文件 416

15.15小结 416

第16章 类型反射、晚期绑定和基于特性的编程 417

16.1类型元数据的必要性 417

16.2反射 420

16.3构建自定义的元数据查看器 423

16.4动态加载程序集 427

16.5反射共享程序集 428

16.6晚期绑定 430

16.7特性编程 432

16.8构建自定义特性 435

16.9程序集级别(和模块级别)特性 438

16.10使用早期绑定反射特性 439

16.11使用晚期绑定反射特性 439

16.12反射、晚期绑定和自定义特性的使用背景 440

16.13构建可扩展的应用程序 441

16.14小结 445

第17章 进程、应用程序域和对象上下文 446

17.1回顾传统的Win32进程 446

17.2 .NET平台下与进程进行交互 448

17.3 .NET应用程序域 453

17.4对象上下文边界 458

17.5进程、应用程序域和上下文小结 461

17.6小结 461

第18章 构建多线程应用程序 463

18.1进程、应用程序域、上下文及线程之间的关系 463

18.2 .NET委托的简短回顾 465

18.3委托的异步性 466

18.4异步调用方法 467

18.5 System.Threading命名空间 471

18.6 System.Threading.Thread类 472

18.7以编程方式创建次线程 474

18.8并发问题 478

18.9使用Timer Callback编程 483

18.10 CLR线程池 484

18.11 BackgroundWorker组件的作用 486

18.12小结 488

第19章 CIL和动态程序集的作用 490

19.1 CIL编程的本质 490

19.2 CIL指令、特性和操作码 491

19.3入栈和出栈:CIL基于栈的本质 492

19.4正反向工程 493

19.5 CIL指令和特性 499

19.6 .NET基类库、C#和CIL数据类型的映射 504

19.7在CIL中定义成员 505

19.8剖析CIL操作码 507

19.9使用CIL构建.NET程序集 511

19.10动态程序集 515

19.11小结 522

第五部分 .NET基类库简介 524

第20章 文件输入输出和隔离存储 524

20.1研究System.IO命名空间 524

20.2 Directory(Info)和File(Info)类型 525

20.3使用Directorylnfo类型 526

20.4使用Directory类型 528

20.5使用DriveInfo类类型 529

20.6使用FileInfo类 530

20.7使用File类型 533

20.8 Stream抽象类 535

20.9使用StreamWriter和StreamReader类型 537

20.10使用StringWriter和Stri ngReader 540

20.11使用BinaryWriter和BinaryReader 541

20.12以编程方式“观察”文件 542

20.13实现异步文件1/O操作 544

20.14隔离存储的作用 545

20.15 代码访问安全入门 546

20.16隔离存储概览 552

20.17使用IsolatedStorageFile获取存储 556

20.18实战隔离存储:ClickOnce部署 559

20.19小结 562

第21章 对象序列化 564

21.1对象序列化 564

21.2为序列化配置对象 566

21.3选择序列化格式化程序 567

21.4使用BinaryFormatter序列化对象 569

21.5使用SoapFormatter序列化对象 571

21.6使用XmlSerializer序列化对象 572

21.7序列化对象集合 574

21.8自定义序列化过程 575

21.9小结 579

第22章 ADO.NET之一:连接层 580

22.1 ADO.NET高层次定义 580

22.2 ADO.NET的数据提供程序 581

22.3其他的ADO.NET命名空间 584

22.4 System.Data命名空间的类型 584

22.5使用接口抽象数据提供程序 588

22.6创建AutoLot数据库 590

22.7 ADO.NET数据提供程序工厂模型 594

22.8 ADO.NET的连接式访问 598

22.9使用数据读取器 603

22.10构建可重用的数据访问库 604

22.11创建控制台UI前端 610

22.12使用SqlCommand进行异步数据访问 614

22.13数据库事务 616

22.14小结 619

第23章 ADO.NET之二:断开连接层 620

23.1 ADO.NET断开连接层 620

23.2 DataSet的作用 621

23.3使用DataColumn 623

23.4使用DataRow 625

23.5使用DataTabl e 627

23.6将DataTable对象绑定到用户界面 631

23.7使用数据适配器填充DataSet/DataTable 639

23.8重访AutoLotDAL.dll 641

23.9切换多表DataSet对象 644

23.10 Visual Studio 2008的数据访问工具 649

23.11从UI层解耦自动生成的代码 656

23.12小结 659

第24章 LINQ API编程 660

24.1 LINQ to ADO.NET的作用 660

24.2使用LINQ to DataSet编程 660

24.3使用LINQ to SQL编程 665

24.4使用sqlmetal.exe生成实体类 669

24.5使用Visual Studio 2008建立实体类 674

24.6使用LINQ to XML操作XML文档 676

24.7在内存文档中导航 680

24.8小结 682

第25章 WCF 683

25.1各种分布式计算API 683

25.2 WCF的作用 688

25.3 WCF核心程序集 690

25.4 Visual Studio WCF项目模板 691

25.5 WCF应用程序的基本构成 692

25.6 WCF的ABC 693

25.7构建WCF服务 697

25.8承载WCF服务 700

25.9构建WCF客户端应用程序 706

25.10使用WCF服务库项目模板 710

25.11以Windows服务承载WCF服务 712

25.12异步调用服务 716

25.13定义WCF数据契约 717

25.14小结 722

第26章 WF 723

26.1定义业务流程 723

26.2 WF的构建块 724

26.3 WF程序集、命名空间和项目 728

26.4构建一个启用工作流的简单应用 730

26.5 WF引擎承载代码 734

26.6在工作流中调用Web服务 736

26.7构建可重用的WF代码库 746

26.8关于自定义活动的简要说明 750

26.9小结 751

第六部分 桌面用户界面 754

第27章 Windows Forms编程 754

27.1 Windows Forms命名空间 754

27.2创建一个简单的Windows Forms程序(不用IDE) 755

27.3 Visual Studio Windows Forms项目模板 759

27.4剖析Form 764

27.5响应鼠标活动 769

27.6响应键盘活动 771

27.7设计对话框 772

27.8通过GDI+呈现图形数据 778

27.9创建一个完整的Windows Forms应用程序 782

27.10小结 788

第28章 WPF和XAM L 789

28.1 WPF背后的动机 789

28.2各种形式的WPF应用程序 791

28.3 WPF程序集 793

28.4创建(不使用XAML的)WPF应用程序 798

28.5 Application类型的其他细节 802

28.6 Window类型的其他细节 804

28.7构建(XAML相关的)WPF应用程序 807

28.8将标记转换为.NET程序集 810

28.9使用代码隐藏文件实现的关注点的分离 814

28.10 XAML语法 815

28.11使用Visual Studio 2008构建WPF应用程序 826

28.12在运行时处理XAML: SimpleXaml-Pad.exe 830

28.13微软Expression Blend的作用 833

28.14小结 834

第29章 使用WPF控件编程 835

29.1 WPF控件库概述 835

29.2使用XAML声明控件 836

29.3依赖属性的作用 839

29.4路由事件 842

29.5使用Button类型 845

29.6使用CheckBoxe和RadioButton 848

29.7使用ListBox和ComboBox类型 850

29.8使用文本区 854

29.9使用面板进行内容布局 857

29.10使用嵌套面板创建窗口框架 864

29.11 WPF控件命令 868

29.12 WPF数据绑定模型 870

29.13使用IValueConverter进行数据转换 872

29.14绑定到自定义对象 875

29.15将UI元素绑定到XML文档 878

29.16小结 881

第30章 WPF 2D图形呈现、资源和主题 882

30.1 WPF图形呈现服务 882

30.2探究Shape派生类 887

30.3使用WPF画刷 889

30.4使用WPF画笔 891

30.5探究Drawing派生类 892

30.6 UI变换的功能 895

30.7 WPF动画服务 897

30.8 WPF的资源体系 903

30.9为WPF控件定义应用样式 905

30.10使用模板改变控件的UI 913

30.11小结 916

第七部分 使用ASP.NET构建Web应用程序 918

第31章 构建ASP.NET网页 918

31.1 HTTP的作用 918

31.2 Web应用程序和Web服务 919

31.3 HTML的作用 921

31.4客户端脚本的作用 925

31.5提交表单数据(GET和POST) 927

31.6构建传统的ASP页面 927

31.7传统ASP相关问题 929

31.8 ASP.NET命名空间 930

31.9 ASP.NET网页代码模型 931

31.10 ASP.NET站点目录结构细节 939

31.11 ASP.NET页面编译周期 940

31.12页面类型的继承链 942

31.13与传入的HTTP请求交互 943

31.14与输出HTTP响应交互 946

31.15 ASP.NET网页的生命周期 947

31.16 Web.config文件的作用 950

31.17小结 952

第32章 ASP.NETWeb控件、主题和母版页 953

32.1 Web控件的本质 953

32.2 System.Web.UI.Control类型 955

32.3 System.Web.UI.WebControls.WebControl类型 957

32.4 ASP.NET Web控件的类别 958

32.5构建功能丰富的ASP.NET站点 959

32.6验证控件的作用 970

32.7使用主题 975

32.8使用HTML表格布局控件 979

32.9小结 981

第33章 ASP.NET状态管理技术 982

33.1状态问题 982

33.2 ASP.NET状态管理技术 984

33.3 ASP.NET视图状态的作用 984

33.4 Global.asax文件的作用 987

33.5应用程序状态与会话状态差别 989

33.6使用应用程序缓存 993

33.7维护会话数据 996

33.8 cookie 999

33.9 <sessionState>元素的作用 1001

33.10 ASP.NET用户配置API 1003

33.11小结 1008

第八部分 附录 1010

附录A COM与.NET的互操作性 1010

A.1 .NET互操作的研究范围 1010

A.2 .NET调用COM互操作的简单示例 1011

A.3 .NET互操作程序集 1013

A.4运行库可调用包装 1014

A.5 COM IDL的作用 1016

A.6使用类型库创建互操作程序集 1020

A.7创建一个更复杂的COM服务 1021

A.8互操作程序集 1023

A.9在COM中使用.NET 1027

A.10 CCW的作用 1028

A.11 .NET类接口的作用 1029

A.12构建.NET类型 1029

A.13生成类型库并注册.NET类型 1030

A.14导出类型信息 1031

A.15创建一个Visual Basic 6.0的测试客户端 1032

A.16小结 1033

附录B 使用Mono进行平台无关的.NET开发 1034

B.1 .NET的平台无关性 1034

B.2获取和安装Mono 1036

B.3 Mono开发工具 1038

B.4使用Mono创建.NET应用程序 1040

B.5推荐学习 1046

B.6小结 1046

索引 1047