目 录
第Ⅰ部分 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 Express
Edition 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 Express
2005 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
.AssemblyDelaySign
Attribute 821
30.4 定制属性 824
30.4.1 BugFixAttribute 824
30.4.2 System.AttributeUsage
Attribute 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