第Ⅰ部分 C#基础 3
第1章 .NET Framework 3
1.1 .NET Framework简介 3
1.1.1 公共语言运行库 3
1.1.2 .NET Framework类库 4
1.2 程序集和Microsoft中间语言(MSIL) 5
1.3 .NET Framework和Visual Studio的各种版本 7
1.4 小结 8
第2章 Visual Studio 2008入门 9
2.1 Visual Studio 2008概述 9
2.1.1 选择开发设置 10
2.1.2 复位开发设置 11
2.1.3 创建新项目 12
2.1.4 IDE的组件 13
2.2 代码和文本编辑器 25
2.2.1 代码片段 25
2.2.2 IntelliSense 26
2.2.3 重构支持 28
2.3 调试 37
2.3.1 设置断点 37
2.3.2 单步调试代码 38
2.3.3 监视 39
2.3.4 Autos和Immediate窗口 40
2.4 单元测试 40
2.4.1 创建测试 41
2.4.2 运行测试 43
2.4.3 测试浮点数 44
2.4.4 添加额外的测试方法 45
2.5 小结 46
第3章 C#语言基础 47
3.1 使用Visual Studio 2008 47
3.2 使用C#编译器(csc.exe) 49
3.3 详细分析HelloWorld程序 51
3.4 语言语法 54
3.4.1 关键字 54
3.4.2 变量 54
3.4.3 变量的作用域 55
3.4.4 常量 58
3.4.5 注释 59
3.4.6 XML文档 59
3.5 数据类型 62
3.5.1 值类型 62
3.5.2 引用类型 67
3.5.3 枚举 68
3.5.4 数组 69
3.5.5 隐式类型 70
3.5.6 类型转换 71
3.6 流程控制 74
3.6.1 if-else语句 74
3.6.2 switch语句 75
3.7 循环 77
3.7.1 for循环 78
3.7.2 嵌套的for循环 79
3.7.3 foreach 79
3.7.4 while和do-while循环 80
3.7.5 从循环退出 80
3.7.6 跳出迭代 83
3.8 运算符 84
3.8.1 赋值运算符 84
3.8.2 关系运算符 86
3.8.3 逻辑运算符 87
3.8.4 数学运算符 89
3.8.5 运算符优先级 90
3.9 预处理器指令 91
3.9.1 #define和#undef 91
3.9.2 #if、#else、#elif和#endif 95
3.9.3 #warning和#error 96
3.9.4 #line 98
3.9.5 #region和#endregion 99
3.9.6 #pragma warning 101
3.10 小结 103
第4章 类和对象 105
4.1 类 105
4.1.1 定义类 106
4.1.2 使用部分类 106
4.1.3 创建类的实例(对象实例化) 107
4.1.4 匿名类型(C# 3.0新增) 108
4.1.5 类成员 110
4.1.6 函数成员 113
4.1.7 静态类 133
4.2 System.Object类 134
4.2.1 测试相等性 135
4.2.2 实现相等性 137
4.2.3 ToString()方法 138
4.2.4 属性 139
4.3 结构体 142
4.4 小结 145
第5章 接口 147
5.1 定义接口 147
5.2 实现接口 148
5.3 实现多个接口 149
5.4 扩展接口 150
5.5 接口强制转换 152
5.6 is和as运算符 153
5.7 重写接口实现 154
5.8 小结 156
第6章 继承 157
6.1 理解C#中的继承 157
6.2 实现继承 158
6.2.1 抽象类 159
6.2.2 抽象方法 160
6.2.3 虚方法 162
6.2.4 密封的类和方法 164
6.2.5 重载方法 165
6.2.6 重载运算符 168
6.2.7 扩展方法(C# 3.0新增) 171
6.2.8 访问修饰符 173
6.2.9 继承和构造函数 174
6.2.10 调用基类构造函数 175
6.3 接口继承 176
6.4 显式接口成员实现 180
6.5 小结 183
第7章 委托和事件 185
7.1 委托 185
7.1.1 创建委托 185
7.1.2 委托链接(多播委托) 188
7.1.3 使用委托实现回调 192
7.1.4 异步回调 193
7.1.5 匿名方法和拉姆达表达式 196
7.2 事件 197
7.2.1 处理事件 199
7.2.2 实现事件 203
7.2.3 事件和委托之间的区别 206
7.2.4 将状态信息传递给事件处理程序 207
7.3 小结 210
第8章 字符串和正则表达式 211
8.1 System.String类 211
8.1.1 转义字符 213
8.1.2 字符串操作 216
8.1.3 字符串格式化 223
8.1.4 StringBuilder类 225
8.2 正则表达式 227
8.2.1 搜索匹配项 227
8.2.2 更复杂的模式匹配 228
8.3 小结 230
第9章 泛型 231
9.1 理解泛型 231
9.1.1 泛型类 233
9.1.2 在泛型中使用default关键字 235
9.1.3 泛型的优点 237
9.1.4 在泛型类型中使用约束 237
9.1.5 泛型接口 241
9.1.6 泛型结构体 242
9.1.7 泛型方法 242
9.1.8 泛型运算符 244
9.1.9 泛型委托 246
9.2 泛型和.NET Framework类库 246
9.3 使用LinkedList〈T〉泛型类 249
9.4 System.Collection.ObjectModel 253
9.5 小结 256
第10章 线程化 257
10.1 多线程化的需要 257
10.1.1 启动线程 258
10.1.2 终止线程 260
10.1.3 向线程传递形参 264
10.2 线程同步 266
10.2.1 使用Interlocked类 267
10.2.2 使用C#的lock关键字 267
10.2.3 Monitor类 270
103 Windows Forms中的线程安全 274
10.3.1 使用BackgroundWorker控件 277
10.3.2 测试应用程序 281
10.4 小结 282
第11章 文件和流 283
11.1 操作文件和目录 283
11.1.1 操作目录 283
11.1.2 使用File和FileInfo类操作文件 287
11.1.3 创建文件资源管理器 291
11.2 Stream类 293
11.2.1 BufferedStream 295
11.2.2 FileStream类 296
11.2.3 MemoryStream 298
11.2.4 NetworkStream类 299
11.3 加密 305
11.3.1 散列 305
11.3.2 随机值散列 307
11.3.3 加密和解密 308
11.4 Stream对象的压缩 314
11.4.1 压缩 314
11.4.2 解压缩 315
11.5 串行化 320
11.5.1 二进制串行化 320
11.5.2 XML串行化 326
11.6 小结 336
第12章 异常处理 337
12.1 处理异常 337
12.1.1 使用try-catch语句处理异常 338
12.1.2 处理多个异常 340
12.1.3 使用throw语句抛出异常 343
12.1.4 重新抛出异常 345
12.1.5 异常链接 347
12.1.6 使用Exception对象 349
12.1.7 finally语句 351
12.2 创建自定义异常 353
12.3 小结 355
第13章 数组和集合 357
13.1 数组 357
13.1.1 访问数组元素 359
13.1.2 多维数组 360
13.1.3 数组中的数组:交错数组 361
13.1.4 形参数组 362
13.1.5 复制数组 363
13.2 集合接口 363
13.2.1 使用ArrayList类的动态数组 364
13.2.2 索引器和迭代器 366
13.2.3 实现IEnumerable〈T〉和IEnumerator〈T〉 368
13.2.4 使用IComparer〈T〉和IComparable〈T〉实现比较 371
13.2.5 字典 378
13.2.6 栈 380
13.2.7 队列 381
13.3 小结 382
第14章 语言集成查询(LINQ) 383
14.1 LINQ体系结构 383
14.1.1 LINQ to Objects 384
14.1.2 查询语法与方法语法的对比以及拉姆达表达式 387
14.1.3 LINQ和扩展方法 388
14.1.4 LINQ和匿名类型 393
14.2 LINQ to DataSet 394
14.2.1 重新调整数据 397
14.2.2 聚集函数 398
14.2.3 连接表 399
14.2.4 类型化DataSet 402
14.2.5 检测空字段 404
14.2.6 将查询的结果保存到DataTable 405
14.3 LINQ to XML 405
14.3.1 创建XML树 406
14.3.2 查询元素 408
14.3.3 使用RSS的示例 409
14.4 LINQ to SQL 413
14.4.1 使用对象关系设计器 413
14.4.2 查询 415
14.4.3 插入新行 416
14.4.4 更新行 418
14.4.5 删除行 418
14.5 小结 420
第15章 程序集和版本化 421
15.1 程序集 421
15.1.1 程序集的结构 421
15.1.2 研究程序集的内容 422
15.1.3 单文件程序集和多文件程序集 423
15.1.4 理解名称空间和程序集 433
15.2 私有程序集和共享程序集 437
15.2.1 创建共享程序集 439
15.2.2 全局程序集缓存 443
15.2.3 将共享程序集放入GAC中 443
15.2.4 在Visual Studio中使共享程序集可见 445
15.2.5 使用共享程序集 446
15.3 小结 449
第Ⅱ部分 使用C#开发应用程序 453
第16章 开发Windows应用程序 453
16.1 项目 453
16.1.1 配置FTP服务器 453
16.1.2 创建应用程序 455
16.1.3 使用应用程序设置 458
16.1.4 编写应用程序代码 462
16.1.5 构建目录树和显示图像 463
16.1.6 创建新目录 470
16.1.7 删除目录 471
16.1.8 上传照片 472
16.1.9 删除照片 473
16.1.10 测试应用程序 474
16.2 添加打印功能 474
16.2.1 .NET中的打印基础知识 475
16.2.2 向项目添加打印支持 475
16.3 部署应用程序 480
16.3.1 使用ClickOnce发布应用程序 481
16.3.2 更新应用程序 483
16.3.3 以编程方式更新应用程序 485
16.3.4 回滚 487
16.3.5 深入实质:应用程序清单和部署清单 487
16.4 小结 489
第17章 开发ASP.NET Web应用程序 491
17.1 ASP.NET简介 491
17.1.1 ASP.NET的工作方式 492
17.1.2 运行ASP.NET所需的软件 492
17.2 数据绑定 492
17.2.1 使用LINQ to SQL建模数据库 493
17.2.2 使用GridView控件绑定数据 495
17.2.3 显示出版商的名称 499
17.2.4 显示所选择出版商的书目 500
17.2.5 使出版商字段可编辑 503
17.3 使用AJAX构建响应灵敏的应用程序 504
17.3.1 AJAX Control Toolkit 505
17.3.2 使用ScriptManager控件使AJAX支持页面 506
17.3.3 使用UpdatePanel控件 507
17.3.4 使用触发器引发更新 508
17.3.5 使用UpdateProgress控件显示进度 508
17.3.6 使用ModalPopupExtender控件显示模态对话框 509
17.4 小结 514
第18章 开发Windows Mobile应用程序 515
18.1 Windows Mobile平台 515
18.2 使用.NET Compact Framework开发Windows Mobile应用程序 517
18.3 获得适当的SDK和工具 518
18.4 构建RSS阅读器应用程序 520
18.4.1 构建用户界面 520
18.4.2 创建辅助方法 523
18.4.3 编写所有事件处理程序 529
18.4.4 使用仿真器执行测试 535
18.4.5 使用实际的设备执行测试 536
18.5 部署应用程序 536
18.5.1 创建CAB文件 537
18.5.2 创建安装应用程序 540
18.6 小结 550
第19章 开发Silverlight应用程序 551
19.1 Silverlight的发展情况 551
19.1.1 获得相关工具 553
19.1.2 Silverlight的体系结构 553
19.2 使用XAML构建Silverlight UI 554
19.2.1 创建具备基本要素的Silverlight应用程序 554
19.2.2 理解XAML 557
19.2.3 使用Expression Blend 2制作XAML 566
19.3 Silverlight 1.0 573
19.3.1 动画制作——第1部分 573
19.3.2 动画制作——第2部分 577
19.3.3 播放媒体 580
19.3.4 创建自己的媒体播放器 588
19.4 Silverlight 2.0 600
19.5 小结 616
第20章 Windows通信基础 617
20.1 WCF简介 617
20.1.1 WCF与ASMXWeb Service的比较 621
20.1.2 第一个WCF服务 621
20.1.3 使用WCF服务 627
20.2 理解WCF的工作方式 629
20.2.1 WCF通信协议 629
20.2.2 WCF中的ABC 629
20.2.3 消息接发模式 631
20.2.4 驻留WCF服务 632
20.3 构建WCF服务 632
20.3.1 提供多个端点 632
20.3.2 创建自驻留的WCF服务 637
20.3.3 实现WCF回调 644
20.3.4 从AJAX页面调用WCF服务 656
20.4 小结 659
第Ⅲ部分 附录 663
附录A C#关键字 663
A.1 C#的保留关键字 664
A.2 上下文关键字 667
附录B 使用Object Browser研究.NET类库 669
B.1 .NET Framework的各种版本 669
B.1.1 .NET Framework 2.0 670
B.1.2 .NET Framework 3.0 670
B.1.3 .NET Framework 3.5 670
B.2 使用Object Browser 671
附录C 生成C#应用程序的文档 677
C.1 使用XML内联文档 677
C.2 生成文档 684
C.2.1 下载和安装Sandcastle 684
C.2.2 启动Sandcastle 685
C.2.3 构建和查看文档 686
C.2.4 发布文档 689