第Ⅰ部分 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 2012 8
1.3.1 Visual Studio Express 2012产品 9
1.3.2解决方案 9
1.4小结 9
1.5本章要点 10
第2章 编写C#程序 11
2.1 Visual Studio 2012开发环境 12
2.2控制台应用程序 14
2.2.1 Solution Explorer窗口 17
2.2.2 Properties窗口 18
2.2.3 Error List窗口 18
2.3桌面应用程序 19
2.4小结 22
2.5本章要点 22
第3章 变量和表达式 23
3.1 C#的基本语法 24
3.2 C#控制台应用程序的基本结构 26
3.3变量 27
3.3.1简单类型 28
3.3.2变量的命名 31
3.3.3字面值 33
3.3.4变量的声明和赋值 34
3.4表达式 35
3.4.1数学运算符 35
3.4.2赋值运算符 39
3.4.3运算符的优先级 39
3.4.4名称空间 40
3.5小结 43
3.6练习 43
3.7本章要点 44
第4章 流程控制 45
4.1布尔逻辑 45
4.1.1布尔赋值运算符 48
4.1.2按位运算符 49
4.1.3运算符优先级的更新 52
4.2 goto语句 53
4.3分支 54
4.3.1三元运算符 54
4.3.2 if语句 55
4.3.3 switch语句 58
4.4循环 61
4.4.1 do循环 62
4.4.2 while循环 64
4.4.3 for循环 66
4.4.4循环的中断 70
4.4.5无限循环 71
4.5小结 72
4.6练习 72
4.7本章要点 73
第5章 变量的更多内容 75
5.1类型转换 75
5.1.1隐式转换 76
5.1.2显式转换 77
5.1.3使用Convert命令进行显式转换 80
5.2复杂的变量类型 83
5.2.1枚举 83
5.2.2结构 87
5.2.3数组 89
5.3字符串的处理 95
5.4小结 100
5.5练习 100
5.6本章要点 101
第6章 函数 103
6.1定义和使用函数 104
6.1.1返回值 105
6.1.2参数 107
6.2变量的作用域 114
6.2.1其他结构中变量的作用域 116
6.2.2参数和返回值与全局数据 118
6.3 Main()函数 119
6.4结构函数 121
6.5函数的重载 122
6.6委托 124
6.7小结 127
6.8练习 127
6.9本章要点 128
第7章 调试和错误处理 129
7.1 Visual Studio中的调试 130
7.1.1非中断(正常)模式下的调试 130
7.1.2中断模式下的调试 138
7.2错误处理 145
7.2.1 try…catch…finally 146
7.2.2列出和配置异常 150
7.2.3异常处理的注意事项 151
7.3小结 152
7.4练习 152
7.5本章要点 152
第8章 面向对象编程简介 155
8.1面向对象编程的含义 156
8.1.1对象的含义 156
8.1.2一切皆对象 159
8.1.3对象的生命周期 159
8.1.4静态和实例类成员 160
8.2 OOP技术 161
8.2.1接口 161
8.2.2继承 163
8.2.3多态性 164
8.2.4对象之间的关系 166
8.2.5运算符重载 167
8.2.6 事件 167
8.2.7引用类型和值类型 168
8.3桌面应用程序中的OOP 168
8.4小结 171
8.5练习 172
8.6本章要点 173
第9章 定义类 175
9.1 C#中的类定义 175
9.2 System.Object 180
9.3构造函数和析构函数 182
9.4 Visual Studio中的OOP工具 186
9.4.1 Class View窗口 186
9.4.2对象浏览器 187
9.4.3添加类 188
9.4.4类图 189
9.5类库项目 190
9.6接口和抽象类 193
9.7结构类型 195
9.8浅度和深度复制 197
9.9小结 198
9.10练习 198
9.11本章要点 199
第10章 定义类成员 201
10.1成员定义 201
10.1.1定义字段 202
10.1.2定义方法 202
10.1.3定义属性 203
10.1.4在类图中添加成员 208
10.1.5重构成员 211
10.1.6自动属性 212
10.2类成员的其他主题 212
10.2.1隐藏基类方法 212
10.2.2调用重写或隐藏的基类方法 214
10.2.3嵌套的类型定义 215
10.3接口的实现 217
10.4部分类定义 221
10.5部分方法定义 222
10.6示例应用程序 224
10.6.1规划应用程序 224
10.6.2编写类库 224
10.6.3类库的客户应用程序 231
10.7 Call Hierarchy窗口 232
10.8小结 233
10.9练习 233
10.10本章要点 234
第11章 集合、比较和转换 235
11.1集合 236
11.1.1使用集合 236
11.1.2定义集合 242
11.1.3索引符 243
11.1.4给CardLib添加Cards集合 245
11.1.5键控集合和IDictionary 248
11.1.6迭代器 250
11.1.7迭代器和集合 254
11.1.8深度复制 254
11.1.9给CardLib添加深度复制 257
11.2比较 258
11.2.1类型比较 258
11.2.2值比较 263
11.3转换 278
11.3.1重载转换运算符 278
11.3.2 as运算符 279
11.4小结 280
11.5练习 281
11.6本章要点 282
第12章 泛型 283
12.1泛型的概念 284
12.2使用泛型 285
12.2.1可空类型 285
12.2.2 System.Collections.Generic名称空间 292
12.3定义泛型类型 301
12.3.1定义泛型类 302
12.3.2定义泛型接口 313
12.3.3定义泛型方法 313
12.3.4定义泛型委托 315
12.4变体 315
12.4.1协变 316
12.4.2抗变 317
12.5小结 317
12.6练习 318
12.7本章要点 319
第13章 其他OOP技术 321
13.1::运算符和全局名称空间限定符 321
13.2定制异常 323
13.3事件 325
13.3.1事件的含义 325
13.3.2处理事件 326
13.3.3定义事件 328
13.4扩展和使用CardLib 336
13.5特性 344
13.5.1读取特性 344
13.5.2创建特性 345
13.6小结 346
13.7练习 347
13.8本章要点 347
第14章 C#语言的改进 349
14.1初始化器 350
14.1.1对象初始化器 350
14.1.2集合初始化器 352
14.2类型推理 355
14.3匿名类型 356
14.4动态查找 360
14.4.1动态类型 361
14.4.2 IDynamicMetaObject-Provider 364
14.5高级方法参数 365
14.5.1可选参数 365
14.5.2命名参数 367
14.5.3命名参数和可选参数的规则 371
14.6扩展方法 371
14.7 Lambda表达式 375
14.7.1复习匿名方法 375
14.7.2把Lambda表达式用于匿名方法 376
14.7.3 Lambda表达式的参数 379
14.7.4 Lambda表达式的语句体 380
14.7.5 Lambda表达式用作委托和表达式树 381
14.7.6 Lambda表达式和集合 381
14.8调用方信息特性 384
14.9小结 386
14.10练习 387
14.11本章要点 388
第Ⅱ部分 Windows编程 393
第15章 基本桌面编程 393
15.1 XAML 394
15.1.1关注点分离 394
15.1.2 XAML基础知识 395
15.2动手实践 396
15.2.1 WPF控件 397
15.2.2属性 398
15.2.3事件 401
15.3控件布局 405
15.3.1堆叠顺序 406
15.3.2对齐、边距、填充和尺寸 406
15.3.3 Border控件 407
15.3.4 Canvas控件 407
15.3.5 DockPanel控件 408
15.3.6 StackPanel控件 410
15.3.7 Grid控件 412
15.4游戏客户端 414
15.4.1 About窗口 414
15.4.2 Options窗口 419
15.4.3数据绑定 427
15.4.4启动游戏 433
15.5小结 436
15.6练习 437
15.7本章要点 437
第16章 高级桌面编程 439
16.1主窗口 439
16.1.1菜单控件 440
16.1.2路由命令和菜单 440
16.2创建控件并设置样式 443
16.2.1样式 444
16.2.2模板 444
16.2.3值转换器 448
16.2.4触发器 450
16.2.5动画 451
16.3 WPF用户控件 453
16.4把所有内容结合起来 462
16.4.1重构域模型 463
16.4.2视图模型 467
16.4.3大功告成 475
16.5小结 483
16.6练习 484
16.7本章要点 484
第17章 Windows Store应用程序 485
17.1入门 485
17.2 Windows Store应用程序与桌面应用程序 487
17.3开发Windows Store应用程序 488
17.3.1视图模式 488
17.3.2磁贴和锁屏提醒 492
17.3.3应用程序的生存期 492
17.4应用程序的开发 492
17.4.1 WPF与Windows Store应用程序的XAML差异 493
17.4.2模板和页面 494
17.4.3沙箱应用程序 495
17.4.4在页面之间导航 500
17.4.5管理状态 503
17.5修改KarliCards游戏(第1部分) 503
17.5.1创建CardLib项目 503
17.5.2可视化方面的修改 511
17.5.3转换用户控件 511
17.6 Windows Store应用程序中的常见元素 518
17.6.1 AppBar控件 518
17.6.2设置面板 520
17.6.3磁贴、锁屏提醒以及初始屏幕 523
17.7修改KarliCards游戏(第2部分) 524
17.8 Windows应用商店 529
17.9小结 530
17.10练习 530
17.11本章要点 531
第18章 部署桌面应用程序 533
18.1部署概述 534
18.2 ClickOnce部署 534
18.2.1实现ClickOnce部署 535
18.2.2用ClickOnce安装应用程序 541
18.2.3创建和使用应用程序的更新包 542
18.3 InstallShield Limited Edition 543
18.4小结 549
18.5练习 549
18.6本章要点 549
第Ⅲ部分 Web编程 553
第19章 ASP.NET Web编程 553
19.1 Web应用程序概述 554
19.2 ASP.NET运行库 554
19.3创建简单的Web页面 555
19.4服务器控件 562
19.5 ASP.NET回送 563
19.6 ASP.NET AJAX回送 568
19.7输入的有效性验证 571
19.8状态管理 575
19.8.1客户端的状态管理 576
19.8.2服务器端的状态管理 578
19.9样式 581
19.10母版页 585
19.11站点导航 589
19.12身份验证和授权 592
19.12.1身份验证的配置 593
19.12.2使用安全控件 596
19.13读写SQL Server数据库 598
19.14小结 607
19.15 练习 607
19.16本章要点 607
第20章 部署Web应用程序 609
20.1 Internet Information Services 609
20.2 IIS配置 611
20.3复制Web站点 612
20.4发布Web站点 615
20.5小结 617
20.6练习 618
20.7本章要点 618
第Ⅳ部分 数据访问 621
第21章 文件系统数据 621
21.1流 621
21.2用于输入和输出的类 622
21.2.1 File类和Directory类 623
21.2.2 FileInfo类 624
21.2.3 DirectoryInfo类 625
21.2.4路径名和相对路径 626
21.2.5 FileStream对象 626
21.2.6 StreamWriter对象 632
21.2.7 StreamReader对象 634
21.2.8异步文件访问 641
21.2.9 读写压缩文件 641
21.3序列化对象 644
21.4监控文件系统 648
21.5小结 653
21.6练习 653
21.7本章要点 654
第22章 XML 655
22.1 XML文档 656
22.1.1 XML元素 656
22.1.2特性 657
22.1.3 XML声明 657
22.1.4 XML文档的结构 658
22.1.5 XML名称空间 658
22.1.6格式良好并有效的XML 659
22.1.7验证XML文档 660
22.2在应用程序中使用XML 663
22.2.1 XML文档对象模型 663
22.2.2选择节点 673
22.2.3 XPath 673
22.3小结 677
22.4练习 677
22.5本章要点 678
第23章 LINQ简介 679
23.1第一个LINQ查询 680
23.1.1用var关键字声明结果变量 681
23.1.2指定数据源:from子句 682
23.1.3指定条件:where子句 682
23.1.4选择元素:select子句 682
23.1.5完成:使用foreach循环 683
23.1.6延迟执行的查询 683
23.2使用LINQ方法语法 683
23.2.1 LINQ扩展方法 683
23.2.2查询语法和方法语法 684
23.3排序查询结果 685
23.4 orderby子句 687
23.5用方法语法排序 687
23.6查询大型数据集 689
23.7聚合运算符 691
23.8查询复杂的对象 694
23.9投影:在查询中创建新对象 698
23.10投影:方法语法 700
23.11单值选择查询 700
23.12 Any()和All()方法 701
23.13多级排序 703
23.14多级排序方法语法:ThenBy 705
23.15组合查询 705
23.16 Take()和Skip()方法 707
23.17 First()和FirstOrDefault()方法 709
23.18 LINQ集运算符 710
23.19 Join查询 713
23.20小结 714
23.21练习 714
23.22本章要点 715
第24章 应用LI NQ 717
24.1 LINQ的变体 717
24.2给数据库使用LINQ 718
24.3安装 SQL Server和Northwind示例数据 718
24.3.1安装SQL Server Express 719
24.3.2安装Northwind示例数据库 719
24.4第一个LINQ数据库查询 719
24.5浏览数据库关系 723
24.6使用LINQ to XML 725
24.7 LINQ to XML函数构造方式 725
24.8保存和加载XML文档 729
24.8.1从字符串中加载XML 732
24.8.2已保存的XML文档内容 732
24.9处理XML片段 732
24.10从数据库中生成XML 734
24.11查询XML文档的方法 737
24.12使用LINQ to XML查询成员 738
24.12.1 Elements() 738
24.12.2 Descendants() 739
24.12.3 Attbutes() 741
24.13小结 743
24.14练习 743
24.15 本章要点 744
第V部分 其他技术 747
第25章 Windows Communication Foundation 747
25.1 WCF的含义 748
25.2 WCF概念 748
25.2.1 WCF通信协议 749
25.2.2地址、端点和绑定 750
25.2.3协定 751
25.2.4消息模式 752
25.2.5行为 752
25.2.6驻留 752
25.3 WCF编程 753
25.3.1 WCF测试客户端程序 759
25.3.2定义WCF服务协定 762
25.3.3自驻留的WCF服务 769
25.4小结 776
25.5练习 776
25.6本章要点 777
第26章 Windows Workflow Foundation 779
26.1 Hello World 779
26.2工作流和活动 781
26.2.1 If活动 781
26.2.2 While活动 782
26.2.3 Sequence活动 782
26.3实参和变量 783
26.4定制活动 788
26.4.1工作流扩展 790
26.4.2活动的有效性验证 795
26.4.3活动设计器 796
26.5小结 798
26.6练习 798
26.7本章要点 799
附录A 习题答案 801