第Ⅰ部分 C#语言 3
第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 2010 8
1.3.1 Visual Studio 2010 Express产品 9
1.3.2 解决方案 9
1.4 小结 9
1.5 本章要点 10
第2章 编写C#程序 11
2.1 开发环境 12
2.1.1 Visual Studio 2010 12
2.1.2 Visual C# 2010 Express Edition 14
2.2 控制台应用程序 15
2.2.1 Solution Explorer 19
2.2.2 Properties窗口 20
2.2.3 Error List窗口 20
2.3 Windows Forms应用程序 21
2.4 小结 25
2.5 本章要点 25
第3章 变量和表达式 27
3.1 C#的基本语法 27
3.2 C#控制台应用程序的基本结构 30
3.3 变量 31
3.3.1 简单类型 31
3.3.2 变量的命名 35
3.3.3 字面值 36
3.3.4 变量的声明和赋值 38
3.4 表达式 39
3.4.1 数学运算符 39
3.4.2 赋值运算符 43
3.4.3 运算符的优先级 44
3.4.4 名称空间 45
3.5 小结 47
3.6 练习 48
3.7 本章要点 49
第4章 流程控制 51
4.1 布尔逻辑 51
4.1.1 布尔赋值运算符 54
4.1.2 按位运算符 55
4.1.3 运算符优先级的更新 59
4.2 goto语句 60
4.3 分支 61
4.3.1 三元运算符 61
4.3.2 if语句 61
4.3.3 switch语句 65
4.4 循环 68
4.4.1 do循环 68
4.4.2 while循环 71
4.4.3 for循环 73
4.4.4 循环的中断 77
4.4.5 无限循环 78
4.5 小结 78
4.6 练习 79
4.7 本章要点 79
第5章 变量的更多内容 81
5.1 类型转换 81
5.1.1 隐式转换 82
5.1.2 显式转换 83
5.1.3 使用Convert命令进行显式转换 86
5.2 复杂的变量类型 89
5.2.1 枚举 89
5.2.2 结构 93
5.2.3 数组 96
5.3 字符串的处理 102
5.4 小结 106
5.5 练习 107
5.6 本章要点 108
第6章 函数 109
6.1 定义和使用函数 110
6.1.1 返回值 111
6.1.2 参数 113
6.2 变量的作用域 120
6.2.1 其他结构中变量的作用域 122
6.2.2 参数和返回值与全局数据 124
6.3 Main()函数 125
6.4 结构函数 128
6.5 函数的重载 128
6.6 委托 130
6.7 小结 133
6.8 练习 133
6.9 本章要点 134
第7章 调试和错误处理 135
7.1 VS和VCE中的调试 135
7.1.1 非中断(正常)模式下的调试 136
7.1.2 中断模式下的调试 144
7.2 错误处理 152
7.2.1 try...catch...finally 153
7.2.2 列出和配置异常 157
7.2.3 异常处理的注意事项 158
7.3 小结 159
7.4 练习 159
7.5 本章要点 159
第8章 面向对象编程简介 161
8.1 面向对象编程的含义 162
8.1.1 对象的含义 162
8.1.2 一切皆对象 165
8.1.3 对象的生命周期 165
8.1.4 静态和实例类成员 166
8.2 OOP技术 167
8.2.1 接口 167
8.2.2 继承 169
8.2.3 多态性 171
8.2.4 对象之间的关系 172
8.2.5 运算符重载 173
8.2.6 事件 174
8.2.7 引用类型和值类型 174
8.3 Windows应用程序中的OOP 175
8.4 小结 177
8.5 练习 177
8.6 本章要点 178
第9章 定义类 179
9.1 C#中的类定义 179
9.2 System.Object 184
9.3 构造函数和析构函数 185
9.4 VS和VCE中的OOP工具 190
9.4.1 Class View窗口 190
9.4.2 对象浏览器 192
9.4.3 添加类 193
9.4.4 类图 194
9.5 类库项目 196
9.6 接口和抽象类 199
9.7 结构类型 201
9.8 浅度和深度复制 203
9.9 小结 203
9.10 练习 204
9.11 本章要点 204
第10章 定义类成员 205
10.1 成员定义 205
10.1.1 定义字段 206
10.1.2 定义方法 206
10.1.3 定义属性 207
10.1.4 在类图中添加成员 212
10.1.5 重构成员 215
10.1.6 自动属性 216
10.2 类成员的其他议题 217
10.2.1 隐藏基类方法 217
10.2.2 调用重写或隐藏的基类方法 219
10.2.3 嵌套的类型定义 220
10.3 接口的实现 220
10.4 部分类定义 224
10.5 部分方法定义 225
10.6 示例应用程序 227
10.6.1 规划应用程序 227
10.6.2 编写类库 228
10.6.3 类库的客户应用程序 235
10.7 Call Hierarchy窗口 236
10.8 小结 237
10.9 练习 237
10.10 本章要点 238
第11章 集合、比较和转换 239
11.1 集合 239
11.1.1 使用集合 240
11.1.2 定义集合 246
11.1.3 索引符 247
11.1.4 给CardLib添加Cards集合 250
11.1.5 关键字值集合和IDictionary 252
11.1.6 迭代器 254
11.1.7 深复制 259
11.1.8 给CardLib添加深复制 261
11.2 比较 263
11.2.1 类型比较 263
11.2.2 值比较 268
11.3 转换 283
11.3.1 重载转换运算符 284
11.3.2 as运算符 285
11.4 小结 286
11.5 练习 286
11.6 本章要点 287
第12章 泛型 289
12.1 泛型的概念 289
12.2 使用泛型 291
12.2.1 可空类型 291
12.2.2 System.Collections.Generic名称空间 297
12.3 定义泛型类型 307
12.3.1 定义泛型类 308
12.3.2 定义泛型接口 319
12.3.3 定义泛型方法 319
12.3.4 定义泛型委托 321
12.4 变体 321
12.4.1 协变 322
12.4.2 抗变 323
12.5 小结 324
12.6 练习 324
12.7 本章要点 325
第13章 其他OOP技术 327
13.1 运算符和全局名称空间限定符 327
13.2 定制异常 329
13.3 事件 331
13.3.1 事件的含义 331
13.3.2 处理事件 332
13.3.3 定义事件 334
13.4 扩展和使用CardLib 343
13.5 小结 351
13.6 练习 352
13.7 本章要点 352
第14章 C#语言的改进 353
14.1 初始化器 353
14.1.1 对象初始化器 354
14.1.2 集合初始化器 356
14.2 类型推理 359
14.3 匿名类型 360
14.4 动态查找 364
14.4.1 dynamic类型 365
14.4.2 IdynamicMetaObject-Provider 369
14.5 高级方法参数 369
14.5.1 可选参数 369
14.5.2 命名参数 371
14.5.3 命名参数和可选参数的规则 375
14.6 扩展方法 375
14.7 Lambda表达式 379
14.7.1 复习匿名方法 379
14.7.2 把Lambda表达式用于匿名方法 380
14.7.3 Lambda表达式的参数 383
14.7.4 Lambda表达式的语句体 384
14.7.5 Lambda表达式用作委托和表达式树 385
14.7.6 Lambda表达式和集合 386
14.8 小结 388
14.9 练习 389
14.10 本章要点 390
第Ⅱ部分 Windows编程 393
第15章 Windows编程基础 393
15.1 控件 393
15.1.1 属性 394
15.1.2 控件的定位、停靠和对齐 395
15.1.3 Anchor和Dock属性 395
15.1.4 事件 396
15.2 Button控件 398
15.2.1 Button控件的属性 398
15.2.2 Button控件的事件 398
15.2.3 添加事件处理程序 399
15.3 Label和LinkLabel控件 400
15.4 TextBox控件 401
15.4.1 TextBox控件的属性 401
15.4.2 TextBox控件的事件 402
15.4.3 添加事件处理程序 404
15.5 RadioButton和CheckBox控件 407
15.5.1 RadioButton控件的属性 408
15.5.2 RadioButton控件的事件 408
15.5.3 CheckBox控件的属性 408
15.5.4 CheckBox控件的事件 409
15.5.5 GroupBox控件 409
15.6 RichTextBox控件 412
15.6.1 RichTextBox控件的属性 412
15.6.2 RichTextBox控件的事件 413
15.7 ListBox和CheckedListBox控件 418
15.7.1 ListBox控件的属性 418
15.7.2 ListBox控件的方法 419
15.7.3 ListBox控件的事件 420
15.8 ListView控件 422
15.8.1 ListView控件的属性 422
15.8.2 ListView控件的方法 424
15.8.3 ListView控件的事件 424
15.8.4 ListViewItem 425
15.8.5 ColumnHeader 425
15.8.6 ImageList控件 425
15.9 TabControl控件 431
15.9.1 TabControl控件的属性 432
15.9.2 使用TabControl控件 432
15.10 小结 434
15.11 练习 434
15.12 本章要点 434
第16章 Windows窗体的高级功能 435
16.1 菜单和工具栏 435
16.1.1 两个实质一样的控件 436
16.1.2 使用MenuStrip控件 436
16.1.3 手工创建菜单 436
16.1.4 ToolStripMenultem控件的其他属性 438
16.1.5 给菜单添加功能 438
16.2 工具栏 440
16.2.1 ToolStrip控件的属性 441
16.2.2 ToolStrip的项 441
16.2.3 StatusStrip控件 445
16.2.4 StatusStripStatusLabel的属性 446
16.3 SDI和MDI应用程序 448
16.4 生成MDI应用程序 449
16.5 创建控件 456
16.5.1 调试用户控件 461
16.5.2 扩展LabelTextbox控件 461
16.6 小结 464
16.7 练习 464
16.8 本章要点 464
第17章 部署Windows应用程序 465
17.1 部署概述 465
17.2 ClickOnce部署 466
17.2.1 创建ClickOnce部署 466
17.2.2 用ClickOnce安装应用程序 474
17.2.3 创建和使用应用程序的更新包 476
17.3 Visual Studio安装和部署项目类型 477
17.4 Microsoft Windows安装程序结构 478
17.4.1 Windows安装程序术语 478
17.4.2 Windows安装程序的优点 480
17.5 为MDI Editor创建安装软件包 480
17.5.1 规划安装内容 480
17.5.2 创建项目 481
17.5.3 项目属性 482
17.5.4 安装编辑器 485
17.5.5 File System编辑器 485
17.5.6 File Types编辑器 488
17.5.7 Launch Condition编辑器 489
17.5.8 User Interface编辑器 490
17.6 生成项目 493
17.7 安装 493
17.7.1 Welcome 494
17.7.2 Read Me 494
17.7.3 License Agreement 495
17.7.4 Optional Files 495
17.7.5 选择安装文件夹 496
17.7.6 确认安装 496
17.7.7 进度 497
17.7.8 完成安装 497
17.7.9 运行应用程序 498
17.7.10 卸载 498
17.8 小结 498
17.9 练习 499
17.10 本章要点 499
第Ⅲ部分 Web编程 503
第18章 ASP.NET Web编程 503
18.1 Web应用程序概述 503
18.2 ASP.NET运行库 504
18.3 创建简单的Web页面 504
18.4 服务器控件 512
18.5 ASP.NET同送 513
18.6 ASP.NET AJAX回送 518
18.7 输入的有效性验证 521
18.8 状态管理 525
18.8.1 客户端的状态管理 525
18.8.2 服务器端的状态管理 527
18.9 样式 530
18.10 母版页 535
18.11 站点导航 540
18.12 身份验证和授权 542
18.12.1 身份验证的配置 543
18.12.2 使用安全控件 546
18.13 读写SQL Server数据库 549
18.14 小结 556
18.15 练习 556
18.16 本章要点 556
第19章 Web服务 557
19.1 使用Web服务的场合 557
19.1.1 宾馆旅行社代理应用程序 558
19.1.2 图书发布应用程序 558
19.1.3 客户应用程序的类型 558
19.2 应用程序的体系结构 558
19.3 Web服务的体系结构 559
19.3.1 调用方法和WSDL 559
19.3.2 调用方法 560
19.3.3 WS-I规范 561
19.4 Web服务和.NET Framework 561
19.4.1 创建Web服务 562
19.4.2 客户程序 563
19.5 创建简单的ASP.NET Web服务 564
19.6 测试Web服务 567
19.7 实现Windows客户程序 568
19.8 异步调用服务 572
19.9 实现ASP.NET客户程序 575
19.10 传送数据 576
19.11 小结 579
19.12 练习 580
19.13 本章要点 580
第20章 部署Web应用程序 581
20.1 Internet Information Services 581
20.2 IIS配置 582
20.3 复制Web站点 584
20.4 发布Web站点 587
20.5 Windows安装程序 589
20.5.1 创建安装程序 589
20.5.2 安装Web应用程序 591
20.6 小结 592
20.7 练习 593
20.8 本章要点 593
第Ⅳ部分 数据访问 597
第21章 文件系统数据 597
21.1 流 597
21.2 用于输入和输出的类 598
21.2.1 File类和Directory类 599
21.2.2 FileInfo类 600
21.2.3 DirectoryInfo类 602
21.2.4 路径名和相对路径 602
21.2.5 FileStream对象 602
21.2.6 StreamWriter对象 608
21.2.7 StreamReader对象 611
21.2.8 读写压缩文件 617
21.3 序列化对象 620
21.4 监控文件系统 625
21.5 小结 631
21.6 练习 632
21.7 本章要点 632
第22章 XML 633
22.1 XML文档 634
22.1.1 XML元素 634
22.1.2 特性 635
22.1.3 XML声明 635
22.1.4 XML文档的结构 636
22.1.5 XML名称空间 636
22.1.6 格式良好并有效的XML 637
22.1.7 验证XML文档 638
22.2 在应用程序中使用XML 641
22.2.1 XML文档对象模型 641
22.2.2 选择节点 650
22.2.3 XPath 651
22.3 小结 654
22.4 练习 655
22.5 本章要点 655
第23章 LINQ简介 657
23.1 第一个LINQ查询 658
23.1.1 用var关键字声明结果变量 659
23.1.2 指定数据源:from子句 660
23.1.3 指定条件:where子句 660
23.1.4 指定元素:select子句 660
23.1.5 完成:使用foreach循环 661
23.1.6 延迟执行的查询 661
23.2 使用LINQ方法语法 661
23.2.1 LINQ扩展方法 661
23.2.2 查询语法和方法语法 662
23.3 排序查询结果 663
23.4 orderby子句 665
23.5 用方法语法排序 665
23.6 查询大型数据集 667
23.7 聚合运算符 669
23.8 查询复杂的对象 672
23.9 投影:在查询中创建新对象 676
23.10 投影:方法语法 678
23.11 单值选择查询 678
23.12 Any和All 679
23.13 多级排序 681
23.14 多级排序方法语法:ThenBy 683
23.15 组合查询 683
23.16 Take和Skip 685
23.17 First和FirstOrDefault 687
23.18 集运算符 688
23.19 Join查询 691
23.20 小结 693
23.21 练习 693
23.22 本章要点 693
第24章 应用LINQ 695
24.1 LINQ的变体 695
24.2 给数据库使用LINQ 696
24.3 安装SQL Server和Northwind示例数据 696
24.3.1 安装SQL Server Express 2008 697
24.3.2 安装Northwind示例数据库 697
24.4 第一个LINQ数据库查询 697
24.5 浏览数据库关系 701
24.6 使用LINQ to XML 703
24.7 LINQ to XML函数构造方法 703
24.8 保存和加载XML文档 707
24.8.1 从字符串中加载XML 710
24.8.2 已保存的XML文档内容 710
24.9 处理XML片段 710
24.10 从数据库中生成XML 713
24.11 查询XML文档的方法 715
24.12 使用LINQ to XML查询成员 716
24.12.1 Elements() 717
24.12.2 Descendants() 717
24.12.3 Attributes() 719
24.13 小结 721
24.14 练习 721
24.15 本章要点 722
第Ⅴ部分 其他技术 725
第25章 Windows Presentation Foundation 725
25.1 WPF的概念 726
25.1.1 WPF给设计人员带来的好处 726
25.1.2 WPF给C#开发人员带来的好处 728
25.2 基本WPF应用程序的组成 729
25.3 WPF基础 739
25.3.1 XAML语法 740
25.3.2 桌面和Web应用程序 742
25.3.3 Application对象 742
25.3.4 控件基础 743
25.3.5 控件的布局 751
25.3.6 控件的样式 760
25.3.7 触发器 764
25.3.8 动画 765
25.3.9 静态和动态资源 768
25.4 用WPF编程 773
25.4.1 WPF用户控件 774
25.4.2 实现依赖属性 774
25.5 小结 784
25.6 练习 785
25.7 本章要点 785
第26章 Windows Communication Foundation 787
26.1 WCF的含义 788
26.2 WCF概念 788
26.2.1 WCF通信协议 789
26.2.2 地址、端点和绑定 789
26.2.3 合同 791
26.2.4 消息模式 791
26.2.5 行为 792
26.2.6 驻留 792
26.3 WCF编程 792
26.3.1 WCF测试客户程序 800
26.3.2 定义WCF服务合同 802
26.3.3 自驻留的WCF服务 810
26.4 小结 816
26.5 练习 817
26.6 本章要点 817
第27章 Windows Workflow Foundation 819
27.1 Hello World 819
27.2 工作流和活动 821
27.2.1 If活动 821
27.2.2 While活动 822
27.2.3 Sequence活动 822
27.3 变元和变量 823
27.4 定制活动 828
27.4.1 工作流扩展 830
27.4.2 活动的有效性验证 835
27.4.3 活动设计器 836
27.5 小结 838
27.6 练习 838
27.7 本章要点 838
附录A 习题答案 839