标题：C#入门经典
第3版
基本信息原书名：Beginning Visual C# 2005
原出版社：Wrox 
作者：(美)Karli Watson Christian Nagel
译者：齐立波
丛书名：清华版WROX公司.NET和ORACLE编程经典系列
出版社：清华大学出版社 
ISBN：7302127352
出版日期：2006 年5月 
开本：16开 
页码：864
所属分类：计算机> 软件与程序设计> C#内容简介这是一本曾成就无数C#程序员的经典名著，厚而不“重”，可帮助您轻松掌握C# 2005的各种编程知识，为您的职业生涯打下坚实的基础！该书自第1版问世，国内销量达3万册！一本首选的入门教程。本书作者都是各自领域的专家，都是C#语言和.NET Framework爱好者。  该书将全面介绍C#编程的所有知识，共分为5篇：第1篇是C#语言：介绍了C#语言的所有内容，从基础知识到面向对象的技术，应有尽有。第2篇是Windows编程：介绍如何用C#编写Windows应用程序，如何部署它们。第3篇是Web编程：描述Web应用程序的开发、Web服务和Web应用程序的部署。第4篇是数据访问：介绍在应用程序中如何使用数据，包括存储在硬盘文件上的数据、以XML格式存储的数据和数据库中的数据。第5篇是其他技术：讲述使用C#和.NET Framework的一些额外方式，包括程序集、属性、XML文档、网络和GDI+图形编程。
该书适合于想学习使用.NET Framework编写C#程序的初级读者，也适合于已了解.NET 1.0，而想学习.NET 2.0和Visual Studio 2005最新功能的读者。图书目录第Ⅰ部分 C# 语 言
第1章 C#简介 3
2.2.1 Solution Explorer 15
2.2.2 Properties窗口 16
2.2.3 Error List窗口 16
2.3 Windows Forms应用程序 17
2.4 小结 20
第3章 变量和表达式 22
3.1 C#的基本语法 22
3.2 变量 26
3.2.1 简单类型 26
3.2.2 变量的命名 30
3.2.3 字面值 31
3.2.4 变量的声明和赋值 33
3.3 表达式 34
3.3.1 数学运算符 34
3.3.2 赋值运算符 38
3.3.3 运算符的优先级 39
3.3.4 命名空间 39
3.4 小结 42
3.5 练习 43
第4章 流程控制44
4.1 布尔逻辑 44
4.1.1 位运算符 46
4.1.2 布尔赋值运算符 50
4.1.3 运算符的优先级更新 51
4.2 goto语句52
4.3 分支 53
4.3.1 三元运算符 53
4.3.2 if语句 54
4.3.3 switch语句 57
4.4 循环 60
4.4.1 do循环 61
4.4.2 while循环 63
4.4.3 for循环 65
4.4.4 循环的中断 69
4.4.5 无限循环 70
4.5 小结 71
4.6 练习 71
第5章 变量的更多内容 73
5.1 类型转换 73
5.1.1 隐式转换 73
5.1.2 显式转换 75
5.1.3 使用Convert命令进行显式
转换 77
5.2 复杂的变量类型 80
5.2.1 枚举 81
5.2.2 结构 85
5.2.3 数组87
5.3 字符串的处理 94
5.4 小结 98
5.5 练习 98
第6章 函数 100
6.1 定义和使用函数 101
6.1.1 返回值 102
6.1.2 参数 104
6.2 变量的作用域 111
6.2.1 其他结构中变量的作用域 113
6.2.2 参数和返回值与全局数据 115
6.3 Main()函数 116
6.4 结构函数 119
6.5 函数的重载 120
6.6 委托 121
6.7 小结 124
6.8 练习 124
第7章 调试和错误处理 126
7.1 Visual Studio中的调试 126
7.1.1 非中断(正常)模式下的调试 127
7.1.2 中断模式下的调试 134
7.2 错误处理 143
7.3 小结 149
7.4 练习 150
第8章 面向对象编程简介 151
8.1 什么是面向对象编程 151
8.1.1 什么是对象 152
8.1.2 所有的东西都是对象 154
8.1.3 对象的生命周期 155
8.1.4 静态和实例类成员 156
8.2 OOP技术 156
8.2.1 接口 157
8.2.2 继承 158
8.2.3 多态性 160
8.2.4 对象之间的关系 161
8.2.5 运算符重载 163
8.2.6 事件 163
8.2.7 引用类型和值类型 163
8.3 Windows应用程序中的OOP 164
8.4 小结 166
8.5 练习 167
第9章 定义类 168
9.1 C#中的类定义 168
9.2 System.Object 173
9.3 构造函数和析构函数 174
9.4 Visual Studio 2005中的OOP
工具 178
9.4.1 Class View窗口 178
9.4.2 对象浏览器181
9.4.3 添加类 182
9.4.4 类图 183
9.5 类库项目 184
9.6 接口和抽象类 187
9.7 结构类型 189
9.8 小结 191
9.9 练习 192
第10章 定义类成员 193
10.1 成员定义 193
10.1.1 定义字段 193
10.1.2 定义方法 194
10.1.3 定义属性 195
10.1.4 在类图中添加成员 200
10.1.5 重制成员 202
10.2 类成员的其他议题 203
10.2.1 隐藏基类方法 203
10.2.2 调用重写或隐藏的基类
方法 205
10.2.3 嵌套的类型定义 206
10.3 接口的实现 207
10.4 部分类定义 210
10.5 示例应用程序 212
10.5.1 规划应用程序 212
10.5.2 编写类库 213
10.5.3 类库的客户应用程序 219
10.6 小结 220
10.7 练习 221
第11章 集合、比较和转换 222
11.1 集合 222
11.1.1 使用集合 223
11.1.2 定义集合 229
11.1.3 索引符 230
11.1.4 给CardLib添加Cards集合 232
11.1.5 关键字值集合和
IDictionary 235
11.1.6 迭代器 236
11.1.7 深度复制 241
11.1.8 给CardLib添加深度复制 243
11.2 比较 245
11.2.1 类型比较 245
11.2.2 值比较 250
11.3 转换 266
11.3.1 重载转换运算符 266
11.3.2 as运算符 267
11.4 小结 268
11.5 练习 269
第12章 泛型 271
12.1 泛型的概念 271
12.2 使用泛型 272
12.2.1 可空类型 272
12.2.2 System.Collections. Generic
命名空间 279
12.3 定义泛型 288
12.3.1 定义泛型类 288
12.3.2 定义泛型接口 300
12.3.3 定义泛型方法 300
12.3.4 定义泛型委托 302
12.4 小结 302
12.5 练习 303
第13章 其他OOP技术 304
13.1 ::运算符和全局命名空间
限定符 304
13.2 定制异常 305
13.3 事件 307
13.3.1 什么是事件 307
13.3.2 使用事件 309
13.3.3 定义事件 311
13.4 扩展和使用CardLib 319
13.5 小结 326
13.6 练习 327
第Ⅱ部分 Windows 编 程
第14章 Windows编程基础 331
14.1 控件 331
14.1.1 属性 332
14.1.2 控件的定位、停靠和对齐 333
14.1.3 事件 334
14.2 Button控件336
14.2.1 Button控件的属性 337
14.2.2 Button控件的事件 337
14.3 Label和LinkLabel控件339
14.4 TextBox控件340
14.4.1 TextBox控件的属性 340
14.4.2 TextBox控件的事件 341
14.5 RadioButton和CheckBox
控件 348
14.5.1 RadioButton控件的属性 349
14.5.2 RadioButton控件的事件 349
14.5.3 CheckBox控件的属性 349
14.5.4 CheckBox控件的事件 350
14.5.5 GroupBox控件 350
14.6 RichTextBox控件354
14.6.1 RichTextBox控件的属性 354
14.6.2 RichTextBox控件的事件 355
14.7 ListBox和CheckedListBox
控件 360
14.7.1 ListBox控件的属性 360
14.7.2 ListBox控件的方法 361
14.7.3 ListBox控件的事件 362
14.8 ListView控件365
14.8.1 ListView控件的属性 365
14.8.2 ListView控件的方法 367
14.8.3 ListView控件的事件 367
14.8.4 ListViewItem 368
14.8.5 ColumnHeader 368
14.8.6 ImageList控件 368
14.9 TabControl控件 375
14.9.1 TabControl控件的属性 376
14.9.2 使用TabControl控件 376
14.10 小结 378
14.11 练习 379
第15章 Windows Forms的高级功能 380
15.1 菜单和工具栏380
15.1.1 两个实质一样的控件 380
15.1.2 使用MenuStrip控件 381
15.1.3 手工创建菜单 381
15.1.4 ToolStripMenuItem控件的
其他属性 384
15.1.5 给菜单添加功能 384
15.2 工具栏 386
15.2.1 ToolStrip控件的属性 387
15.2.2 ToolStrip的项 387
15.2.3 StatusStrip控件 392
15.2.4 StatusStripStatusLabel的
属性 392
15.3 SDI和MDI应用程序 394
15.4 创建控件 403
15.4.1 调试用户控件 409
15.4.2 扩展LabelTextbox控件 410
15.5 小结 412
15.6 练习 413
第16章 使用通用对话框 414
16.1 对话框 414
16.2 如何使用对话框 415
16.3 文件对话框 416
16.3.1 OpenFileDialog 416
16.3.2 SaveFileDialog 427
16.4 打印 432
16.4.1 打印结构 432
16.4.2 打印多个页面 437
16.4.3 PageSetupDialog 439
16.4.4 PrintDialog 442
16.5 打印预览 446
16.5.1 PrintPreviewDialog 446
16.5.2 PrintPreviewControl 446
16.6 FontDialog和ColorDialog 447
16.6.1 FontDialog 447
16.6.2 ColorDialog 449
16.6.3 FolderBrowserDialog 450
16.7 小结 451
16.8 练习 452
第17章 部署Windows应用程序 453
17.1 部署概述 453
17.2 ClickOnce 部署 454
17.3 Visual Studio安装和部署
项目类型 463
17.4 Microsoft Windows安装
程序结构 464
17.4.1 Windows Installer术语 464
17.4.2 Windows Installer的优点 466
17.5 为Simple Editor创建安装软件包466
17.5.1 规划安装内容 467
17.5.2 创建项目 467
17.5.3 项目属性 468
17.5.4 安装编辑器470
17.5.5 File System编辑器 471
17.5.6 File Types编辑器 474
17.5.7 Launch Condition编辑器 475
17.5.8 User Interface编辑器 476
17.6 构建项目 479
17.7 安装 479
17.7.1 Welcome 480
17.7.2 Read Me 481
17.7.3 License Agreement 481
17.7.4 Optional Files 481
17.7.5 选择安装文件夹 482
17.7.6 确认安装 483
17.7.7 进度 483
17.7.8 结束安装 484
17.7.9 运行应用程序 484
17.7.10 卸载484
17.8 小结 484
17.9 练习 485
第Ⅲ部分 Web 编 程
第18章 Web编程基础489
18.1 概述 489
18.2 ASP .NET 运行库490
18.3 创建简单的Web页面 490
18.4 服务器控件 496
18.5 事件处理程序 497
18.6 输入的有效性验证 502
18.7 状态管理 505
18.7.1 客户端的状态管理 506
18.7.2 服务器端的状态管理 508
18.8 身份验证和授权 510
18.8.1 身份验证的配置 511
18.8.2 使用安全控件 515
18.9 读写SQL Server数据库 517
18.10 小结 525
18.11 练习 525
第19章 Web高级编程 526
19.1 示例站点 526
19.2 主页 527
19.3 站点导航 533
19.4 用户控件 535
19.5 个性化配置 537
19.5.1 个性化配置组 538
19.5.2 组件的个性化配置 539
19.5.3 定制数据类型中的个性化配置 539
19.5.4 匿名用户的个性化配置 540
19.6 Web Parts 541
19.6.1 Web Parts管理器 542
19.6.2 Web Parts区域 542
19.6.3 Editor区域 544
19.6.4 Catalog区域 546
19.6.5 Connections区域 548
19.7 小结 550
19.8 练习 551
第20章 Web服务 552
20.1 Web服务推出之前 552
20.1.1 远程过程调用(RPC) 553
20.1.2 SOAP 553
20.2 使用Web服务的场合 554
20.2.1 宾馆旅行社代理应用程序 554
20.2.2 书籍发布应用程序 555
20.2.3 客户应用程序的类型 555
20.2.4 应用程序的体系结构 555
20.3 Web服务的体系结构 556
20.3.1 Web服务的搜索引擎 557
20.3.2 可以调用的方法 558
20.3.3 调用方法 559
20.3.4 SOAP和防火墙561
20.3.5 WS-I基本个性化配置 561
20.4 Web服务和.NET Framework 561
20.4.1 创建Web服务 561
20.4.2 客户程序 563
20.5 创建一个简单的ASP .NET 
Web服务 564
20.5.1 生成的文件 564
20.5.2 添加Web方法 565
20.6 测试Web服务 566
20.7 执行Windows客户程序 567
20.8 异步调用服务 570
20.9 执行ASP .NET客户程序 572
20.10 传送数据 572
20.11 小结 575
20.12 练习 576
第21章 部署Web应用程序 577
21.1 Internet Information Services 577
21.2 IIS配置 578
21.3 复制Web站点 582
21.4 预编译Web站点 583
21.5 Windows安装程序 584
21.5.1 创建安装程序 584
21.5.2 安装Web 应用程序 586
21.6 小结 588
21.7 练习 589
第Ⅳ部分 数 据 访 问
第22章 文件系统数据 593
22.1 流 593
22.2 用于输入和输出的类 594
22.2.1 File和Directory类 595
22.2.2 FileInfo类 596
22.2.3 DirectoryInfo类 597
22.2.4 FileStream对象 598
22.2.5 StreamWriter对象 604
22.2.6 StreamReader对象 606
22.2.7 读写压缩文件 612
22.3 串行化对象 616
22.4 监控文件结构 620
22.5 小结 626
22.6 练习 627
第23章 XML 628
23.1 XML文档 628
23.1.1 XML元素 628
23.1.2 属性 629
23.1.3 XML声明 630
23.1.4 XML文档的结构 630
23.1.5 XML命名空间 631
23.1.6 格式良好并有效的XML 632
23.1.7 验证XML文档 632
23.2 在应用程序中使用XML 637
23.2.1 XML文档对象模型637
23.2.2 选择节点 646
23.3 小结 654
23.4 练习 654
第24章 数据库和ADO .NET655
24.1 ADO .NET概述 655
24.1.1 ADO .NET名称的来源 655
24.1.2 ADO .NET的设计目标 656
24.2 ADO .NET类和对象概述 657
24.2.1 提供者对象 658
24.2.2 用户对象 659
24.2.3 使用System.Data命名空间 659
24.3 安装SQL Server和Northwind
示例数据 660
24.3.1 安装SQL Express 661
24.3.2 安装Northwind示例
数据库 661
24.4 用DataReader读取数据 662
24.5 用DataSet读取数据 668
24.5.1 用数据填充DataSet 668
24.5.2 访问DataSet中的表、行
和列 668
24.6 更新数据库 671
24.6.1 给数据库添加行 675
24.6.2 删除行 681
24.7 在DataSet中访问多个表 683
24.7.1 ADO .NET中的关系 683
24.7.2 导航关系 684
24.8 XML和ADO .NET 691
24.9 ADO .NET中的SQL支持 694
24.9.1 DataAdapter对象中的SQL
命令 694
24.9.2 直接执行SQL命令 697
25.9.3 调用SQL存储过程 699
24.10 小结 701
24.11 练习 702
第25章 数据绑定 703
25.1 安装SQL Server和示例数据 703
25.2 创建VS数据库项目 703
25.2.1 数据库对象 706
25.2.2 浏览数据库表和关系 707
25.3 给应用程序添加数据源 709
25.4 添加DataGridView 715
25.4.1 格式化DataGridView 716
25.4.2 添加不同类型的控件 718
25.4.3 查看生成的代码 719
25.4.4 更新数据库 720
25.5 小结 721
25.6 练习 721
第Ⅴ部分 其 他 技 术
第26章 .NET程序集 725
26.1 组件 725
26.1.1 组件的优点 726
26.1.2 组件的简史 726
26.2 .NET程序集的功能 727
26.2.1 自说明性 727
26.2.2 .NET程序集和.NET 
Framework类库 727
26.2.3 跨语言的程序设计 728
26.2.4 与COM和其他旧代码的
交互操作 728
26.3 程序集的结构 729
26.3.1 查看程序集的内容 731
26.3.2 清单 734
26.3.3 程序集属性 737
26.4 调用程序集 741
26.5 私有和共享程序集 744
26.5.1 私有程序集 744
26.5.2 共享程序集 744
26.5.3 搜索程序集 748
26.6 小结 748
26.7 练习 749
第27章 属性 750
27.1 什么是属性 750
27.2 反射 753
27.3 内置属性 756
27.3.1 System.Diagnostics.Condi
tionalAttribute 757
27.3.2 System.ObsoleteAttribute 759
27.3.3 System.SerializableAttribute 760
27.3.4 System.Reflection.Assembly
DelaySignAttribute 762
27.4 定制属性 766
27.4.1 TestCaseAttribute 766
27.4.2 System.AttributeUsage
Attribute 770
27.4.3 使用属性生成数据库表 776
27.5 小结 790
第28章 XML文档说明 791
28.1 添加XML文档说明 791
28.1.1 XML文档说明的注释 793
28.1.2 使用类图添加XML文档
说明 799
28.1.3 生成XML文档说明文件 802
28.1.4 带有XML文档说明的应用
程序示例 805
28.2 使用XML文档说明 807
28.2.1 编程处理XML文档说明 807
28.2.2 用XSLT格式化XML
文档说明 809
28.2.3 NDoc 810
28.3 小结 811
28.4 练习 811
第29章 网络 812
29.1 联网概述 812
29.1.1 名称的解析 814
29.1.2 统一资源标识符816
29.1.3 TCP和UDP 817
29.1.4 应用协议 817
29.2 网络编程选项 818
29.3 WebClient 819
29.4 WebRequest和WebResponse 821
29.5 TcpListener和TcpClient 828
29.6 小结 835
29.7 练习 836
第30章 GDI+简介 837
30.1 图形绘制概述 837
30.1.1 Graphics类 838
30.1.2 对象的删除 838
30.1.3 坐标系统839
30.1.4 颜色 846
30.2 使用Pen类绘制线条 847
30.3 使用Brush 类绘制图形 849
30.4 使用Font 类绘制文本 851
30.5 使用图像进行绘制 855
30.5.1 使用纹理画笔进行绘图 857
30.5.2 使用钢笔绘制图像 858
30.5.3 双倍缓冲 860
30.6 GDI+的高级功能 862
30.6.1 剪切 862
30.6.2 System.Drawing.Drawing2D 863
30.6.3 System.Drawing.Imaging 864
30.7 小结 864
30.8 练习 864
第4版
内容简介  《C#入门经典(第4版)》通过C#可以很容易地学习.NET Framework 3.5的强大功能，所以C#是开始您编程生涯的绝佳方式。《C#入门经典(第4版)》全面阐述了C#编程的所有方面，包括C#语言本身、Windows编程、Web编程及数据源的使用等内容。
学习了新的编程技巧后，《C#入门经典(第4版)》介绍了如何高效地部署应用程序和服务，论述了许多高级技术，如图形化编程。另外，还探讨了如何使用Visual C# Express 2008、Visual Web Developer Express 2008和Visual Studio 2008的功能。所有这些内容都已更新，以反映.NET Framework 3.5和Visual Studio 2008的变化。各章的样例代码和示例还可以用于创建强大且安全的应用程序。
《C#入门经典(第4版)》语言简练，条理清晰，涵盖了Visual C# 2008和.NET Framework 3.5的全部内容。通过学习《C#入门经典(第4版)》，您将能够快速入门，轻松开发出自己的应用程序。
《C#入门经典(第4版)》主要内容
C#的所有基础知识和面向对象编程
通过C#语言编写和部署Windows应用程序
开发定制的Web应用程序和利用Web服务的技巧
数据访问技术，包括使用LINQ处理XML数据
通过单击按钮将应用程序发布到Web上
使用Windows Presentation Foundation、Windows Workflow Foundation、Windows Communication Foundation、GDI+和联网等其他技术
《C#入门经典(第4版)》读者对象
《C#入门经典(第4版)》适合于想学习使用.NET Framework编写C#程序的读者，也适合于已了解.NET，又想学习.NET 3.5或Visual Studio 2008最新功能的读者。图书推荐《C#入门经典(第4版)》是一本成就无数C#程序员的经典名著，厚而不“重”，可帮助您轻松掌握C#的各种编程知识，为您的职业生涯打下坚实的基础，《C#入门经典》自第1版出版以来，全球销量已经达数万册，在中国也有近8万册的销量，已经成为广大初级C#程序员首选的入门教程，也是目前国内市场上最畅销的C#专业店销书，曾两次被CSDN、《程序员》等机构和读者评选为“最受读者喜爱的十大技术开发类图书”！第4版面向C#2008和．NET 3．5 继续完善原有内容，同时全面介绍．NET的最新技术和特性。
Wrox畅销书!C#经典名著！2005年最杈威的十大IT图书！2 006年最受读者喜爱的十大技术开发类图书！2008年全国高校出版社优秀销书一等奖！2006～2008年最畅销的 C#入门教程!作者简介作者：(美国)karli Watson (美国)Christian Nagel 译者：齐立波 黄静
齐立波，计算机专业硕士、大学讲师，一直从事C/C++和C#程序设计方面的教学与科研工作，曾参与编写多本计算机教材，并为一些软件公司翻译过大量的技术文档。
黄静，计算机专业博士，在程序设计、软件工程和网络安全等方面有着多年的研究和实战经验，曾为NET技术在国内的推广作出了重要贡献，翻译和发表了多篇有关．NET的技术文档和文章。目录第Ⅰ部分 C# 语 言
第1章 C#简介 3
1.1 什么是.NET Framework 3
1.1.1 NET Framework的内容 4
1.1.2 用.NET Framework编写应用程序 4
1.2 什么是C# 7
1.2.1 用C#能编写什么样的应用程序 7
1.2.2 本书中的C# 8
1.3 Visual Studio 2008 8
1.3.1 Visual Studio 2008 Express 产品 9
1.3.2 解决方案 9
1.4 小结 9
第2章 编写C#程序 10
2.1 开发环境 10
2.1.1 Visual Studio 2008 11
2.1.2 Visual C# 2008 ExpressEdition 13
2.2 控制台应用程序 13
2.2.1 Solution Explorer 16
2.2.2 Properties窗口 17
2.2.3 Error List窗口 17
2.3 Windows Forms应用程序 18
2.4 小结 22
第3章 变量和表达式 23
3.1 C#的基本语法 23
3.2 C#控制台应用程序的基本结构 25
3.3 变量 27
3.3.1 简单类型 27
3.3.2 变量的命名 31
3.3.3 字面值 32
3.3.4 变量的声明和赋值 33
3.4 表达式 34
3.4.1 数学运算符 34
3.4.2 赋值运算符 38
3.4.3 运算符的优先级 39
3.4.4 名称空间 39
3.5 小结 42
3.6 练习 43
第4章 流程控制 44
4.1 布尔逻辑 44
4.1.1 位运算符 46
4.1.2 布尔赋值运算符 50
4.1.3 运算符的优先级更新 51
4.2 goto语句 52
4.3 分支 53
4.3.1 三元运算符 53
4.3.2 if语句 54
4.3.3 switch语句 57
4.4 循环 60
4.4.1 do循环 61
4.4.2 while循环 63
4.4.3 for循环 65
4.4.4 循环的中断 69
4.4.5 无限循环 70
4.5 小结 70
4.6 练习 71
第5章 变量的更多内容 72
5.1 类型转换 72
5.1.1 隐式转换 72
5.1.2 显式转换 74
5.1.3 使用Convert命令进行 显式转换 76
5.2 复杂的变量类型 79
5.2.1 枚举 79
5.2.2 结构 83
5.2.3 数组 86
5.3 字符串的处理 91
5.4 小结 95
5.5 练习 96
第6章 函数 97
6.1 定义和使用函数 98
6.1.1 返回值 99
6.1.2 参数 101
6.2 变量的作用域 107
6.2.1 其他结构中变量的作用域 110
6.2.2 参数和返回值与全局数据 111
6.3 Main()函数 113
6.4 结构函数 114
6.5 函数的重载 115
6.6 委托 117
6.7 小结 119
6.8 练习 120
第7章 调试和错误处理 121
7.1 VS和VCE中的调试 121
7.1.1 非中断(正常)模式下的调试 122
7.1.2 中断模式下的调试 131
7.2 错误处理 139
7.2.1 try...catch...finally 140
7.2.2 列出和配置异常 144
7.2.3 异常处理的注意事项 145
7.3 小结 146
7.4 练习 146
第8章 面向对象编程简介 147
8.1 什么是面向对象编程 147
8.1.1 什么是对象 148
8.1.2 所有的东西都是对象 151
8.1.3 对象的生命周期 151
8.1.4 静态和实例类成员 152
8.2 OOP技术 153
8.2.1 接口 153
8.2.2 继承 155
8.2.3 多态性 156
8.2.4 对象之间的关系 157
8.2.5 运算符重载 159
8.2.6 事件 159
8.2.7 引用类型和值类型 160
8.3 Windows应用程序中的OOP 160
8.4 小结 162
8.5 练习 163
第9章 定义类 164
9.1 C#中的类定义 164
9.2 System.Object 169
9.3 构造函数和析构函数 170
9.4 VS和VCE中的OOP工具 174
9.4.1 Class View窗口 174
9.4.2 对象浏览器 176
9.4.3 添加类 177
9.4.4 类图 177
9.5 类库项目 179
9.6 接口和抽象类 182
9.7 结构类型 184
9.8 小结 186
9.9 练习 186
第10章 定义类成员 187
10.1 成员定义 187
10.1.1 定义字段 187
10.1.2 定义方法 188
10.1.3 定义属性 189
10.1.4 在类图中添加成员 194
10.1.5 重制成员 196
10.1.6 自动属性 197
10.2 类成员的其他议题 197
10.2.1 隐藏基类方法 198
10.2.2 调用重写或隐藏的基类方法 199
10.2.3 嵌套的类型定义 200
10.3 接口的实现 201
10.4 部分类定义 204
10.5 部分方法定义 206
10.6 示例应用程序 207
10.6.1 规划应用程序 207
10.6.2 编写类库 208
10.6.3 类库的客户应用程序 214
10.7 小结 215
10.8 练习 216
第11章 集合、比较和转换 217
11.1 集合 217
11.1.1 使用集合 218
11.1.2 定义集合 224
11.1.3 索引符 225
11.1.4 给CardLib添加Cards集合 227
11.1.5 关键字值集合和IDictionary 229
11.1.6 迭代器 231
11.1.7 深度复制 236
11.1.8 给CardLib添加深度复制 238
11.2 比较 239
11.2.1 类型比较 240
11.2.2 值比较 244
11.3 转换 259
11.3.1 重载转换运算符 259
11.3.2 as运算符 260
11.4 小结 261
11.5 练习 262
第12章 泛型 263
12.1 泛型的概念 263
12.2 使用泛型 264
12.2.1 可空类型 264
12.2.2 System.Collections.Generic 名称空间 271
12.3 定义泛型 279
12.3.1 定义泛型类 280
12.3.2 定义泛型接口 291
12.3.3 定义泛型方法 291
12.3.4 定义泛型委托 293
12.4 小结 293
12.5 练习 293
第13章 其他OOP技术 295
13.1 ::运算符和全局名称空间
13.2 定制异常 296
13.2.1 异常基类 297
13.2.2 给CardLib添加定制异常 297
13.3 事件 298
13.3.1 什么是事件 298
13.3.2 使用事件 300
13.3.3 定义事件 302
13.4 扩展和使用CardLib 309
13.5 小结 317
13.6 练习 317
第14章 C# 3.0语言的改进 318
14.1 初始化器 318
14.1.1 对象初始化器 319
14.1.2 集合初始化器 320
14.2 类型推断 323
14.3 匿名类型 325
14.4 扩展方法 328
14.5 ?表达式 333
14.5.1 复习匿名方法 333
14.5.2 把?表达式用于匿名方法 334
14.5.3 ?表达式的参数 337
14.5.4 ?表达式的语句体 337
14.5.5 ?表达式用作委托和表达式树 338
14.5.6 ?表达式和集合 339
14.6 小结 342
14.7 练习 342
第Ⅱ部分 Windows 编 程
第15章 Windows编程基础 347
15.1 控件 347
15.1.1 属性 348
15.1.2 控件的定位、停靠和对齐 349
15.1.3 事件 350
15.2 Button控件 352
15.2.1 Button控件的属性 352
15.2.2 Button控件的事件 353
15.3 Label和LinkLabel控件 354
15.4 TextBox控件 355
15.4.1 TextBox控件的属性 355
15.4.2 TextBox控件的事件 356
15.5 RadioButton和CheckBox控件 363
15.5.1 RadioButton控件的属性 364
15.5.2 RadioButton控件的事件 364
15.5.3 CheckBox控件的属性 364
15.5.4 CheckBox控件的事件 364
15.5.5 GroupBox控件 365
15.6 RichTextBox控件 368
15.6.1 RichTextBox控件的属性 368
15.6.2 RichTextBox控件的事件 369
15.7 ListBox和CheckedListBox控件 374
15.7.1 ListBox控件的属性 375
15.7.2 ListBox控件的方法 376
15.7.3 ListBox控件的事件 376
15.8 ListView控件 378
15.8.1 ListView控件的属性 378
15.8.2 ListView控件的方法 380
15.8.3 ListView控件的事件 381
15.8.4 ListViewItem 381
15.8.5 ColumnHeader 381
15.8.6 ImageList控件 381
15.9 TabControl控件 388
15.9.1 TabControl控件的属性 389
15.9.2 使用TabControl控件 389
15.10 小结 392
15.11 练习 392
第16章 Windows Forms的高级功能 393
16.1 菜单和工具栏 393
16.1.1 两个实质一样的控件 393
16.1.2 使用MenuStrip控件 394
16.1.3 手工创建菜单 394
16.1.4 ToolStripMenuItem控件的其他属性 397
16.1.5 给菜单添加功能 397
16.2 工具栏 399
16.2.1 ToolStrip控件的属性 399
16.2.2 ToolStrip的项 400
16.2.3 StatusStrip控件 405
16.2.4 StatusStripStatusLabel的属性 405
16.3 SDI和MDI应用程序 407
16.4 创建控件 415
16.4.1 LabelTextbox控件 417
16.4.2 调试用户控件 420
16.4.3 扩展LabelTextbox控件 421
16.5 小结 424
16.6 练习 424
第17章 使用通用对话框 425
17.1 通用对话框 425
17.2 如何使用对话框 426
17.3 文件对话框 427
17.3.1 OpenFileDialog 427
17.3.2 SaveFileDialog 438
17.4 打印 442
17.4.1 打印结构 442
17.4.2 打印多个页面 447
17.4.3 PageSetupDialog 449
17.4.4 PrintDialog 451
17.5 打印预览 455
17.5.1 PrintPreviewDialog 455
17.5.2 PrintPreviewControl 456
17.6 FontDialog和ColorDialog 457
17.6.1 FontDialog 457
17.6.2 ColorDialog 459
17.6.3 FolderBrowserDialog 460
17.7 小结 461
17.8 练习 461
第18章 部署Windows应用程序 463
18.1 部署概述 463
18.2 ClickOnce部署 464
18.3 Visual Studio安装和部署项目类型 473
18.4 Microsoft Windows安装程序结构 474
18.4.1 Windows Installer术语 474
18.4.2 Windows Installer的优点 476
18.5 为SimpleEditor创建安装软件包 476
18.5.1 规划安装内容 476
18.5.2 创建项目 477
18.5.3 项目属性 478
18.5.4 安装编辑器 480
18.5.5 File System编辑器 481
18.5.6 File Types编辑器 483
18.5.7 Launch Condition编辑器 485
18.5.8 User Interface编辑器 485
18.6 构建项目 488
18.7 安装 489
18.7.1 Welcome 489
18.7.2 Read Me 489
18.7.3 License Agreement 490
18.7.4 Optional Files 490
18.7.5 选择安装文件夹 491
18.7.6 确认安装 492
18.7.7 进度 492
18.7.8 结束安装 493
18.7.9 运行应用程序 493
18.7.10 卸载 493
18.8 小结 493
18.9 练习 494
第Ⅲ部分 Web 编 程
第19章 Web编程基础 497
19.1 概述 497
19.2 ASP .NET运行库 498
19.3 创建简单的Web页面 498
19.4 服务器控件 504
19.5 事件处理程序 505
19.6 输入的有效性验证 509
19.7 状态管理 512
19.7.1 客户端的状态管理 513
19.7.2 服务器端的状态管理 515
19.8 身份验证和授权 517
19.8.1 身份验证的配置 518
19.8.2 使用安全控件 522
19.9 读写SQL Server数据库 524
19.10 小结 530
19.11 练习 531
第20章 Web高级编程 532
20.1 母版页 532
20.2 站点导航 537
20.3 用户控件 539
20.4 个性化配置 541
20.4.1 个性化配置组 543
20.4.2 组件的个性化配置 543
20.4.3 定制数据类型中的个性化配置 543
20.4.4匿名用户的个性化配置 544
20.5 Web Parts 545
20.5.1 WebPartManager控件 546
20.5.2 WebPartZone控件 546
20.5.3 EditorZone控件 548
20.5.4 CatalogZone控件 550
20.5.5 ConnectionsZone控件 551
20.6 JavaScript 554
20.6.1 Script元素 555
20.6.2 变量的声明 555
20.6.3 定义函数 555
20.6.4 语句 556
20.6.5 对象 556
20.7 小结 560
20.8 练习 560
第21章 Web服务 561
21.1 Web服务推出之前 561
21.1.1 远程过程调用(RPC) 562
21.1.2 SOAP 563
21.2 使用Web服务的场合 563
21.2.1 宾馆旅行社代理应用程序 564
21.2.2 图书发布应用程序 564
21.2.3 客户应用程序的类型 564
21.2.4 应用程序的体系结构 564
21.3 Web服务的体系结构 565
21.3.1 可以调用的方法 565
21.3.2 调用方法 566
21.3.3 SOAP和防火墙 567
21.3.4 WS-I基本个性化配置 568
21.4 Web服务和.NET Framework 568
21.4.1 创建Web服务 568
21.4.2 客户程序 570
21.5 创建简单的ASP .NET Web服务 571
21.6 测试Web服务 572
21.7 执行Windows客户程序 574
21.8 异步调用服务 577
21.9 执行ASP .NET客户程序 580
21.10 传送数据 581
21.11 小结 584
21.12 练习 584
第22章 Ajax编程 586
22.1 Ajax概述 586
22.2 UpdatePanel控件 587
22.3 Timer控件 591
22.4 UpdateProgress控件 592
22.5 Web服务 594
22.6 扩展控件 598
22.7 小结 600
22.8 练习 600
第23章 部署Web应用程序 601
23.1 Internet Information Services 601
23.2 IIS配置 602
23.3 复制Web站点 604
23.4 发布Web站点 606
23.5 Windows安装程序 607
23.5.1 创建安装程序 607
23.5.2 安装Web 应用程序 609
23.6 小结 610
23.7 练习 610
第Ⅳ部分 数 据 访 问
第24章 文件系统数据 613
24.1 流 613
24.2 用于输入和输出的类 614
24.2.1 File类和Directory类 615
24.2.2 FileInfo类 616
24.2.3 DirectoryInfo类 617
24.2.4 路径名和相对路径 618
24.2.5 FileStream对象 618
24.2.6 StreamWriter对象 624
24.2.7 StreamReader对象 626
24.2.8 读写压缩文件 632
24.3 序列化对象 635
24.4 监控文件结构 639
24.5 小结 645
24.6 练习 646
第25章 XML 647
25.1 XML文档 647
25.1.1 XML元素 647
25.1.2 属性 648
25.1.3 XML声明 649
25.1.4 XML文档的结构 649
25.1.5 XML名称空间 650
25.1.6 格式良好并有效的XML 651
25.1.7 验证XML文档 651
25.2 在应用程序中使用XML 654
25.2.1 XML文档对象模型 655
25.2.2 选择节点 663
25.3 小结 670
25.4 练习 671
第26章 LINQ简介 672
26.1 LINQ的变体 673
26.2 第一个LINQ查询 673
26.2.1 用var关键字声明结果变量 675
26.2.2 指定数据源：from子句 675
26.2.3 指定条件：where子句 675
26.2.4 指定元素：select子句 676
26.2.5 完成：使用foreach循环 676
26.2.6 延迟执行的查询 676
26.3使用LINQ方法语法和?表达式 676
26.3.1 LINQ扩展方法 676
26.3.2 查询语法和方法语法 677
26.3.3 ?表达式 677
26.4 排序查询结果 679
26.5 orderby子句 680
26.6 用方法语法排序 681
26.7 查询大型数据集 682
26.8 合计运算符 685
26.9 查询复杂的对象 688
26.10 投射：在查询中创建新对象 691
26.11 投射：方法语法 693
26.12 单值选择查询 693
26.13 Any和All 694
26.14 多级排序 696
26.15 多级排序方法语法：ThenBy 698
26.16 组合查询 698
26.17 Take和Skip 700
26.18 First和FirstOrDefault 702
26.19 集运算符 703
26.20 Join查询 706
26.21 资源和进一步阅读 707
26.22 小结 707
26.23 练习 707
第27章 LINQ to SQL 709
27.1 对象相关映射 709
27.2 安装SQL Server和Northwind示例数据 710
27.2.1 安装SQL Server Express2005 710
27.2.2 安装Northwind示例数据库 711
27.3 第一个LINQ to SQL查询 712
27.4 浏览LINQ to SQL关系 717
27.5 进一步探讨LINQ to SQL 720
27.6 LINQ to SQL中的组合、排序和其他高级查询 723
27.7 显示生成的SQL 725
27.8 用LINQ to SQL绑定数据 729
27.9 用LINQ to SQL更新绑定数据 733
27.10 小结 734
27.11 练习 735
第28章 ADO .NET和LINQ over DataSet 736
28.1 ADO .NET概述 736
28.1.1 ADO .NET名称的来源 737
28.1.2 ADO .NET的设计目标 738
28.2 ADO .NET类和对象概述 739
28.2.1 提供者对象 739
28.2.2 用户对象 740
28.2.3 使用System.Data名称空间 741
28.3 用DataReader读取数据 742
28.4 用DataSet读取数据 749
28.4.1 用数据填充DataSet 749
28.4.2 访问DataSet中的表、行和列 749
28.5 更新数据库 752
28.5.1 给数据库添加行 755
28.5.2 删除行 761
28.6 在DataSet中访问多个表 762
28.6.1 ADO .NET中的关系 762
28.6.2 用关系导航 763
28.7 XML和ADO .NET 770
28.8 ADO .NET中的SQL支持 773
28.8.1 DataAdapter对象中的 SQL命令 773
28.8.2 直接执行SQL命令 776
28.8.3 调用SQL存储过程 778
28.9 使用LINQ over DataSet和ADO .NET 780
28.10 小结 784
28.11 练习 784
第29章 LINQ to XML 785
29.1 LINQ to XML函数构造方法 785
29.2 保存和加载XML文档 789
29.2.1 从字符串中加载XML 791
29.2.2 已保存的XML文档内容 792
29.3 处理XML片段 792
29.4 通过LINQ to XML生成 XML 794
29.5 查询XML文档 798
29.6 小结 804
29.7 练习 804
第Ⅴ部分 其 他 技 术
第30章 属性 809
30.1 什么是属性 809
30.2 反射 812
30.3 内置属性 815
30.3.1 System.Diagnostics.ConditionalAttribute 815
30.3.2 System.Obsolete Attribute 817
30.3.3 System.Serializable
Attribute 818
30.3.4 System.Reflection.AssemblyDelaySignAttribute 821
30.4 定制属性 824
30.4.1 BugFixAttribute 824
30.4.2 System.AttributeUsageAttribute 826
30.5 小结 830
第31章 XML文档说明 831
31.1 添加XML文档说明 831
31.1.1 XML文档说明的注释 833
31.1.2 使用类图添加XML文档说明 839
31.1.3 生成XML文档说明文件 842
31.1.4 带有XML文档说明的应用程序示例 844
31.2 使用XML文档说明 846
31.2.1 编程处理XML文档说明 846
31.2.2 用XSLT格式化XML文档说明 848
31.2.3 文档说明工具 849
31.3 小结 850
31.4 练习 851
第32章 网络 852
32.1 联网概述 852
32.1.1 名称的解析 855
32.1.2 统一资源标识符 856
32.1.3 TCP和UDP 857
32.1.4 应用协议 857
32.2 网络编程选项 859
32.3 WebClient 859
32.4 WebRequest和WebResponse 861
32.5 TcpListener和TcpClient 868
32.6 小结 876
32.7 练习 876
第33章 GDI+简介 877
33.1 图形绘制概述 877
33.1.1 Graphics类 878
33.1.2 对象的删除 878
33.1.3 坐标系统 879
33.1.4 颜色 884
33.2 使用Pen类绘制线条 885
33.3 使用Brush类绘制图形 887
33.4 使用Font 类绘制文本 890
33.5 使用图像进行绘制 893
33.5.1 使用纹理画笔绘图 895
33.5.2 使用钢笔绘制图像 897
33.5.3 双倍缓冲 898
33.6 GDI+的高级功能 900
33.6.1 剪切 900
33.6.2 System.Drawing.Drawing2D 901
33.6.3 System.Drawing.Imaging 901
33.7 小结 901
33.8 练习 902
第 34 章 Windows Presentation Foundation 903
34.1 WPF的概念 904
34.1.1 WPF给设计人员带来的好处 904
34.1.2 WPF给C#开发人员带来的好处 906
34.2 基本WPF应用程序的组成 906
34.3 WPF基础 916
34.3.1 XAML语法 917
34.3.2 桌面和Web应用程序 919
34.3.3 Application对象 920
34.3.4 控件基 920
34.3.5 控件的布局 928
34.3.6 控件的样式 936
34.3.7 触发器 941
34.3.8 动画 942
34.3.9 静态和动态资源 944
34.4 用WPF编程 949
34.4.1 WPF用户控件 950
34.4.2 实现依赖属性 950
34.5 小结 959
34.6 练习 960
第35 章 Windows Communication Foundation 961
35.1 WCF是什么 961
35.2 WCF概念 962
35.2.1 WCF通信协议 962
35.2.2 地址、端点和绑定 963
35.2.3 合同 964
35.2.4 消息模式 965
35.2.5 行为 965
35.2.6 主机 965
35.3 WCF编程 966
35.3.1 定义WCF服务合同 973
35.3.2 自存储的WCF服务 979
35.4 小结 985
35.5 练习 986
第36章 Windows Workflow Foundation 987
36.1 活动 990
36.1.1 DelayActivity 990
36.1.2 SuspendActivity 991
36.1.3 WhileActivity 992
36.1.4 SequenceActivity 994
36.1.5 定制活动 997
36.2 工作流运行库 1002
36.3 数据绑 1007
36.4 小结 1010序言C#是Microsoft在2000年7月推出.NET Framework的第1版时提供的一种全新语言。C#的快速流行，使之成为使用.NET Framework的Windows和Web开发人员无可争议的语言选择。他们喜欢C#的一个原因是其派生于C/C++的简洁语法，这种语法简化了以前困扰一些程序员的问题。尽管做了这些简化，但C#仍保持了C++原来的功能，所以现在没有理由不从C++转向C#。C#语言并不难，也非常适合于学习基本编程技术。易于学习，再加上.NET Framework的功能，使C#成为开始您编程生涯的绝佳方式。
C#的最新版本3.0是.NET Framework 3.5的一部分，它建立在已有的成功基础之上，还添加了一些更吸引人的功能。其中一些功能取自于C++(至少从表面上看是这样)，而另外一些功能是全新的。Visual Studio的最新版本和开发工具的Express系列也有许多变化和改进，这大大简化了编程，显著提高了效率。
本书将全面介绍C#编程的所有知识，从该语言本身一直到Windows和Web编程，再到数据源的使用，最后是一些高级技术，例如，图形编程。我们还将学习Visual C# Express 2008、Visual Web Developer Express 2008和Visual Studio 2008的功能和利用它进行应用程序开发的各种方式。本书界面友好，阐述清晰，每一章都以前面章节的内容为基础，便于读者掌握高级技术。每个概念都会根据需要来介绍和讨论，而不会突然冒出某个技术术语来妨碍读者的阅读和理解。本书尽量不使用技术术语，但如果需要，将根据上下文进行正确的定义和布置。
本书的作者都是各自领域的专家，都是C#语言和.NET Framework的爱好者，没有人比他们更有资格讲授C#了，他们将在您掌握从基本规则到高级技术的过程中为您保驾护航。除了基础知识之外，本书还有许多有益的提示、练习、完全成熟的示例代码(可以从p2p.wrox. com上下载)，在您的职业生涯中一定会用到它们。
本书将毫无保留地传授这些知识，希望读者能通过本书成为最优秀的程序员。
0.1 本书读者对象
本书主要针对想学习如何使用.NET Framework编写C#程序的所有人。本书前面的章节介绍该语言本身，读者不需要具备任何编程经验。以前对其他语言有一定了解的开发人员，会觉得这些章节的内容非常熟悉。C#语法的许多方面都与其他语言相同，许多结构对所有的编程语言来说都是一样的(例如，循环和分支结构)。但是，即使是有经验的程序员也可以从这些章节中获益，理解这些技术应用于C#的特征。
如果读者是编程新手，就应从头开始学习。如果读者对.NET Framework比较陌生，但知道如何编程，就应阅读第1章，然后快速跳读后面的几章，这样就能掌握C#语言的应用方式了。如果读者知道如何编程，但以前没有接触过面向对象的编程语言，就应从第8章开始阅读以后的章节。
如果读者对C#语言比较了解，就可以集中精力学习详细论述最新.NET Framework和C#语言开发的章节，尤其是集合、泛型和C# 3.0语言的新增内容(第11～14章)，或者完全跳过本书的第I部分，从第15章开始学习。
本书章节的编写目的有两个：这些章节可以按顺序阅读，是C#语言的一个完整教程。还可以按照需要深入学习这些章节，将其作为一本参考资料。
除了核心内容之外，每一章还包含一组练习，完成这些练习有助于读者理解所学习的内容。练习包括简单的选择题、判断题以及需要修改或建立应用程序的较难问题。
0.2 本书结构
本书分为6个部分。
● 引言：概述本书的内容和作者。
● C#语言：介绍了C#语言的所有内容，从基础知识到面向对象的技术，应有尽有。
● Windows编程：介绍如何用C#编写Windows应用程序，如何部署它们。
● Web编程：描述Web应用程序的开发、Web服务和Web应用程序的部署。
● 数据访问：介绍在应用程序中如何使用数据，包括存储在硬盘文件上的数据、以XML格式存储的数据和数据库中的数据。
● 其他技术：讲述使用C#和.NET Framework的一些额外方式，包括属性、XML文档说明、网络和GDI+图形编程。还探讨了由.NET 3.0引入且由.NET 3.5改进的WPF、WCF和WF技术。
下面介绍本书5个重要部分中的章节。
0.2.1 C#语言(第1~~14章)
第1章介绍C#以及它与.NET的关系，了解在这个环境下编程的基础知识，以及Visual C# Express(VCE)和VS与它的关系。
第2章开始介绍C#应用程序开发，学习C#的语法，并把C#和样例命令行、Windows应用程序结合起来使用。这些示例将说明C#如何快速轻松地启动和运行，并附带介绍VCE和VS开发环境以及本书将使用的基本窗口和工具。
接着，第3章学习C#语言的更多基础知识，理解变量的含义以及如何操纵它们。第4章将用流程控制(循环和分支)改进应用程序的结构，第5章介绍一些高级的变量类型，如数组。第6章开始以函数的形式封装代码，这样就更易于执行重复的操作，代码更容易理解。
从第7章开始将运用C#语言的基础知识，调试应用程序，这包括在运行应用程序时输出跟踪信息，使用VS查找错误，在强大的调试环境中找出解决问题的办法。
第8章将学习面向对象编程(Object-Oriented Programming，OOP)。首先了解这个术语的含义，回答"什么是对象？"。这个OOP初看起来是比较难的问题。我们将用整整一章的篇幅来介绍它，解释对象的强大之处。直到本章的最后才会使用C#代码。
第9章将理论应用于实践，开始在C#应用程序中使用OOP时，一切都会发生变化，而这正是C#的强大之处。第10章首先介绍如何定义类和接口，然后探讨类成员(包括字段、属性和方法)，在这一章的最后将开始创建一个扑克牌游戏应用程序，这个应用程序将在几章中开发完成，它非常有助于理解OOP。
学习了OOP在C#中的工作原理后，第11章将介绍几种常见的OOP场景，包括处理对象集合、比较和转换对象。第12章讨论.NET 2.0中C#的一个非常有用的新特性——泛型，利用它可以创建非常灵活的类。第13章通过一些其他技术和事件(它在Windows编程中非常重要)完成C#语言和OOP的讨论。最后，第14章介绍C# 3.0中引入的新特性。
0.2.2 Windows编程(第15~~18章)
第15章开始介绍Windows编程的概念，理解在VCE和VS中如何实现Windows编程。这一章也是从基础知识开始介绍，并构建知识体系。第16章学习如何在应用程序中使用.NET Framework提供的各种控件。我们将简要论述.NET如何以图形化的方式建立Windows应用程序，以最少的时间和精力创建高级应用程序。
第17章介绍一些常用的功能。利用这些功能可以方便地添加专业功能，例如，文件管理、打印等。第18章讨论应用程序的部署，包括建立安装程序，以便用户快速安装和运行应用程序。
0.2.3 Web编程(第19~~23章)
这个部分的结构与Windows编程部分类似。首先，第19章描述了构成最简单的Web应用程序的控件，如何把它们组合在一起，让它们使用ASP .NET执行任务。第20章以此为基础，介绍了更高级的技术、各种控件、Web环境下的状态管理，以及Web标准的遵循。
第21章将涉足Web服务的精彩世界，它可以编程访问Internet上的信息和功能，可以把复杂的数据和功能以独立于平台的方式嵌入Web和Windows应用程序。这一章讨论如何使用和创建Web服务，以及.NET提供的其他工具，如安全性。
第22章介绍Ajax编程，这种方式可以给Web应用程序添加动态的客户端功能。.NET Framework 3.5通过ASP .NET Ajax提供了Ajax功能，本章会解释如何使用它。
最后，第23章探讨Web应用程序和服务的部署，尤其是可以通过单击按钮把应用程序发布到Web上的VS和VWD新特性。
0.2.4 数据访问(第24~~29章)
第24章介绍了应用程序如何保存和检索磁盘上的数据，作为简单的文本文件或者更复杂的数据表示方式。这一章还将讨论如何压缩数据，如何操纵旧数据(例如，用逗号隔开的值(CSV)文件)，如何监视和处理文件系统的变化。
第25章学习数据交换的事实标准XML。前面的章节接触过XML几次，而这一章将了解XML的基本规则，论述XML的所有功能。
本部分的其余章节介绍LINQ，这是内置于.NET Framework最新版本中的查询语言。第26章简要介绍LINQ，第27章使用LINQ访问数据库中的数据。第28章介绍如何联合使用LINQ和旧的ADO .NET 数据访问技术。最后，第29章学习如何使用LINQ处理XML数据。
0.2.5 其他技术(第30~~36章)
本书的最后一部分将介绍C#和.NET主题的其他技术。第30章将探讨属性，可以在程序集中包含类型的其他信息，添加用其他方式很难实现的功能。
第31章研究XML文档说明，并介绍如何在源代码中给应用程序添加注释。我们将学习如何添加这些信息，如何使用和提取它们，从而从代码中生成MSDN样式的文档说明。
第32章介绍网络，应用程序如何相互通信，如何与各种网络上的其他服务通信。第33章从本书前面学习的各种技术中解脱出来，研究用GDI+进行图形编程的主题，理解如何操纵图形，设定应用程序的样式，这一章打开了一条通往各种C#应用程序的大门。
最后要讨论.NET Framework最新版本中的几个新技术。第34章介绍Windows Presentation Foundation(WPF)，了解它给Windows和Web开发带来了哪些变化。第35章介绍Windows Communication Foundation(WCF)，它把Web服务的概念扩展和改进为一种企业级的通信技术。本书的最后一章是第36章，介绍了Windows Workflow Foundation(WF)，它允许在应用程序中执行工作流功能，因此可以定义一些操作，这些操作由外部的交互操作控制，以特定的顺序执行，这对许多类型的应用程序都很有帮助。
0.3 使用本书的要求
本书中C#和.NET Framework的代码和描述都适用于.NET 3.5。除了Framework之外，不需要其他东西就可以理解本书的这个方面，但许多示例都需要Visual C# Express 2008作为主要开发工具，一些章节则使用了Visual Web Developer Express 2008。另外，一些功能只能在Visual Studio 2008中使用，这会在相应的地方明确指出。
0.4 源代码
在读者学习本书中的示例时，可以手工输入所有的代码，也可以使用本书附带的源代码文件。
使用Search工具或使用书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接，就可以获得所有的源代码。
注释： 
由于许多图书的标题都很类似，所以按ISBN搜索是最简单的，本书英文版的ISBN是978-0-470-19135-4。
在下载了代码后，只需用自己喜欢的解压缩软件对它进行解压缩即可。
0.5 勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误，但是错误总是难免的，如果您在本书中找到了错误，例如拼写错误或代码错误，请告诉我们，我们将非常感激。通过勘误表，可以让其他读者避免受挫，当然，这还有助于提供更高质量的信息。
请给联系我们，我们就会检查您的反馈信息，如果是正确的，我们将在本书的后续版本中采用。
要在网站上找到本书英文版的勘误表，通过Search工具或书名列表查找本书，然后在本书的细目页面上，单击Book Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表。
0.6 P2P.WROX .COM
要与作者和同行讨论，请加入p2p.wrox .com上的P2P论坛。这个论坛是一个基于Web的系统，便于您张贴与Wrox图书相关的消息和相关技术，与其他读者和技术用户交流心得。该论坛提供了订阅功能，当论坛上有新的消息时，它可以给您传送感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。
在http://p2p.wrox .com上，有许多不同的论坛，它们不仅有助于阅读本书，还有助于开发自己的应用程序。要加入论坛，可以遵循下面的步骤：
(1) 进入p2p.wrox . com，单击Register链接。
(2) 阅读使用协议，并单击Agree按扭。
(3) 填写加入该论坛所需要的信息和自己希望提供的其他信息，单击Submit按扭。
(4) 您会收到一封电子邮件，其中的信息描述了如何验证账户，完成加入过程。
注释：
不加入P2P也可以阅读论坛上的消息，但要张贴自己的消息，就必须加入该论坛。
加入论坛后，就可以张贴新消息，响应其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息，可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。
关于使用Wrox P2P的更多信息，可阅读P2P FAQ，了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题。要阅读FAQ，可以在任意P2P页面上单击FAQ链接。