目 录
第I部分 Visual C#和Visual Studio 2012概述
第1章 欢迎进入C#编程世界 3
1.1 开始在Visual Studio 2012环境中
编程 3
1.2 编写第一个程序 7
1.3 使用命名空间 11
1.4 创建图形应用程序 14
1.4.1 探索Windows Store应用
程序 23
1.4.2 探索WPF应用程序 26
1.4.3 向图形应用程序添加代码 28
小结 30
第1章快速参考 30
第2章 使用变量、操作符和表达式 32
2.1 理解语句 32
2.2 使用标识符 33
2.3 使用变量 34
2.3.1 命名变量 34
2.3.2 声明变量 35
2.4 使用基元数据类型 35
2.4.1 未赋值的局部变量 36
2.4.2 显示基元数据类型的值 36
2.5 使用算术操作符 42
2.5.1 操作符和类型 42
2.5.2 深入了解算术操作符 44
2.5.3 控制优先级 49
2.5.4 使用结合性对表达式进行
求值 49
2.5.5 结合性和赋值操作符 50
2.6 变量递增和递减 51
前缀和后缀 51
2.7 声明隐式类型的局部变量 52
小结 53
第2章快速参考 53
第3章 方法和作用域 54
3.1 创建方法 54
3.1.1 声明方法 54
3.1.2 从方法返回数据 55
3.1.3 调用方法 57
3.2 使用作用域 59
3.2.1 定义局部作用域 60
3.2.2 定义类作用域 60
3.2.3 重载方法 61
3.3 编写方法 62
3.4 使用可选参数和具名参数 68
3.4.1 定义可选参数 70
3.4.2 传递具名参数 70
3.4.3 消除可选参数和具名参数的
歧义 71
小结 75
第3章快速参考 75
第4章 使用判断语句 77
4.1 声明布尔变量 77
4.2 使用布尔操作符 77
4.2.1 理解相等和关系操作符 78
4.2.2 理解条件逻辑操作符 78
4.2.3 短路求值 79
4.2.4 操作符的优先级和结合性
总结 79
4.3 使用if语句做出判断 80
4.3.1 理解if语句的语法 80
4.3.2 使用代码块分组语句 81
4.3.3 嵌套if语句 82
4.4 使用switch语句 87
4.4.1 理解switch语句的语法 88
4.4.2 遵守switch语句的规则 89
小结 92
第4章快速参考 92
第5章 使用复合赋值和循环语句 94
5.1 使用复合赋值操作符 94
5.2 使用while语句 95
5.3 编写for语句 100
5.4 编写do语句 102
小结 109
第5章快速参考 109
第6章 管理错误和异常 111
6.1 处理错误 111
6.2 尝试执行代码和捕捉异常 111
6.2.1 未处理的异常 113
6.2.2 使用多个catch处理程序 113
6.2.3 捕捉多个异常 114
6.2.4 传播异常 119
6.3 使用checked和unchecked整数
运算 121
6.3.1 编写checked语句 122
6.3.2 编写checked表达式 122
6.4 引发异常 125
6.5 使用finally块 129
小结 130
第6章快速参考 131
第II部分 理解C#对象模型
第7章 创建并管理类和对象 135
7.1 理解分类 135
7.2 封装的目的 135
7.3 定义并使用类 136
7.4 控制可访问性 137
7.4.1 使用构造器 138
7.4.2 重载构造器 139
7.5 理解静态方法和数据 146
7.5.1 创建共享字段 147
7.5.2 使用const关键字创建静态
字段 148
7.5.3 静态类 148
7.5.4 匿名类 150
小结 151
第7章快速参考 152
第8章 理解值和引用 154
8.1 复制值类型的变量和类 154
8.2 理解null值和可空类型 159
8.2.1 使用可空类型 160
8.2.2 理解可空类型的属性 161
8.3 使用ref和out参数 162
8.3.1 创建ref参数 162
8.3.2 创建out参数 163
8.4 计算机内存的组织方式 165
8.5 System.Object类 167
8.6 装箱 168
8.7 拆箱 168
8.8 数据类型的安全转换 170
8.8.1 is操作符 170
8.8.2 as操作符 170
小结 172
第8章快速参考 173
第9章 使用枚举和结构创建值类型 175
9.1 使用枚举 175
9.1.1 声明枚举 175
9.1.2 使用枚举 175
9.1.3 选择枚举文字常量值 176
9.1.4 选择枚举的基本类型 177
9.2 使用结构 179
9.2.1 声明结构 181
9.2.2 理解结构和类的区别 182
9.2.3 声明结构变量 183
9.2.4 理解结构的初始化 184
9.2.5 复制结构变量 187
小结 191
第9章快速参考 191
第10章 使用数组 192
10.1 声明和创建数组 192
10.1.1 声明数组变量 192
10.1.2 创建数组实例 193
10.1.3 填充和使用数组 194
10.1.4 创建隐式类型的数组 194
10.1.5 访问单独的数组元素 195
10.1.6 遍历数组 196
10.1.7 数组作为方法参数
和返回值传递 197
10.1.8 复制数组 198
10.1.9 使用多维数组 200
10.1.10 创建交错数组 200
小结 210
第10章快速参考 210
第11章 理解参数数组 212
11.1 回顾重载 212
11.2 使用数组参数 213
11.2.1 声明参数数组 214
11.2.2 使用params object[] 216
11.2.3 使用参数数组 217
11.3 比较参数数组和可选参数 220
小结 222
第11章快速参考 222
第12章 使用继承 223
12.1 什么是继承 223
12.2 使用继承 224
12.2.1 复习System.Object类 225
12.2.2 调用基类构造器 226
12.2.3 类的赋值 227
12.2.4 声明新方法 228
12.2.5 声明虚方法 229
12.2.6 声明重写方法 230
12.2.7 理解受保护的访问 233
12.3 理解扩展方法 239
小结 242
第12章快速参考 243
第13章 创建接口和定义抽象类 245
13.1 理解接口 245
13.1.1 定义接口 246
13.1.2 实现接口 246
13.1.3 通过接口来引用类 248
13.1.4 使用多个接口 248
13.1.5 显式实现接口 249
13.1.6 接口的限制 251
13.1.7 定义和使用接口 251
13.2 抽象类 260
13.3 密封类 262
13.3.1 密封方法 262
13.3.2 实现并使用抽象类 263
小结 268
第13章快速参考 269
第14章 使用垃圾回收和资源管理 271
14.1 对象的生存期 271
14.1.1 编写析构器 272
14.1.2 为什么要使用垃圾回收器 273
14.1.3 垃圾回收器的工作原理 275
14.1.4 慎用析构器 275
14.2 资源管理 276
14.2.1 资源清理方法 276
14.2.2 异常安全的资源清理 276
14.2.3 using语句和IDisposable
接口 277
14.2.4 从析构器中调用Dispose
方法 279
14.3 实现异常安全的资源清理 281
小结 287
第14章快速参考 288
第III部分 用C#定义可扩展类型
第15章 实现属性以访问字段 293
15.1 使用方法实现封装 293
15.2 什么是属性 295
15.2.1 使用属性 297
15.2.2 只读属性 297
15.2.3 只写属性 298
15.2.4 属性的可访问性 298
15.3 理解属性的局限性 299
15.4 在接口中声明属性 300
15.5 生成自动属性 305
15.6 使用属性来初始化对象 307
小结 311
第15章快速参考 311
第16章 使用索引器 313
16.1 什么是索引器 313
16.1.1 不用索引器的例子 313
16.1.2 使用索引器的同一个例子 315
16.1.3 理解索引器的访问器 317
16.1.4 对比索引器和数组 317
16.2 接口中的索引器 320
16.3 在Windows应用程序中使用
索引器 321
小结 326
第16章快速参考 327
第17章 泛型概述 328
17.1 object的问题 328
17.2 泛型解决方案 331
17.2.1 对比泛型类与常规类 333
17.2.2 泛型和约束 334
17.3 创建泛型类 334
17.3.1 二叉树理论 334
17.3.2 使用泛型构造二叉树类 337
17.4 创建泛型方法 345
17.5 可变性和泛型接口 348
17.5.1 协变接口 350
17.5.2 逆变接口 351
小结 353
第17章快速参考 354
第18章 使用集合 355
18.1 什么是集合类 355
18.1.1 List<T>集合类 356
18.1.2 LinkedList<T>集合类 358
18.1.3 Queue<T>集合类 360
18.1.4 Stack<T>集合类 361
18.1.5 Dictionary<TKey, TValue>
集合类 362
18.1.6 SortedList<TKey, TValue>
集合类 363
18.1.7 HashSet<T>集合类 364
18.2 使用集合初始化器 366
18.3 Find方法、谓词和Lambda
表达式 366
18.4 比较数组和集合 368
小结 372
第18章快速参考 373
第19章 枚举集合 375
19.1 枚举集合中的元素 375
19.1.1 手动实现枚举器 376
19.1.2 实现IEnumerable接口 380
19.2 使用迭代器来实现枚举器 382
19.2.1 一个简单的迭代器 382
19.2.2 使用迭代器为Tree<TItem>
类定义枚举器 384
小结 386
第19章快速参考 386
第20章 分离应用程序逻辑并处理
事件 388
20.1 理解委托 388
20.1.1 .NET Framework类库的
委托例子 389
20.1.2 自动化工厂的例子 391
20.1.3 不使用委托来实现工厂 391
20.1.4 使用委托来实现工厂 392
20.1.5 声明和使用委托 394
20.2 Lambda表达式和委托 402
20.2.1 创建方法适配器 402
20.2.2 Lambda表达式的形式 403
20.3 启用事件通知 404
20.3.1 声明事件 405
20.3.2 订阅事件 406
20.3.3 取消订阅事件 406
20.3.4 引发事件 406
20.4 理解用户界面事件 407
小结 414
第20章快速参考 415
第21章 使用查询表达式来查询内存
中的数据 418
21.1 什么是语言集成查询 418
21.2 在C#应用程序中使用LINQ 419
21.2.1 选择数据 420
21.2.2 筛选数据 423
21.2.3 排序、分组和聚合数据 423
21.2.4 联接数据 425
21.2.5 使用查询操作符 426
21.2.6 查询Tree<TItem>对象中的
数据 429
21.2.7 LINQ和推迟求值 434
小结 438
第21章快速参考 438
第22章 操作符重载 440
22.1 理解操作符 440
22.1.1 操作符的限制 440
22.1.2 重载的操作符 441
22.1.3 创建对称操作符 442
22.2 理解复合赋值 444
22.3 声明递增和递减操作符 445
22.4 比较结构和类中的操作符 446
22.5 定义成对的操作符 447
22.6 实现操作符 448
22.7 理解转换操作符 453
22.7.1 提供内建转换 454
22.7.2 实现用户自定义的转换
操作符 454
22.7.3 再论创建对称操作符 455
22.7.4 添加隐式转换操作符 456
小结 458
第22章快速参考 459
第IV部分 使用C#构建Windows 8专业应用
第23章 使用任务提高吞吐量 463
23.1 使用并行处理来执行多任务处理 463
多核处理器的崛起 464
23.2 用.NET Framework实现多任务
处理 465
23.2.1 任务、线程和线程池 466
23.2.2 创建、运行和控制任务 467
23.2.3 使用Task类实现并行处理 469
23.2.4 使用Parallel类对任务进行
抽象 478
23.2.5 什么时候不要使用
Parallel类 482
23.3 取消任务和处理异常 484
23.3.1 协作式取消的原理 484
23.3.2 为Canceled和Faulted任务
使用延续任务 496
小结 496
第23章快速参考 497
第24章 通过异步操作提高响应速度 499
24.1 实现异步方法 500
24.1.1 定义异步方法:问题 500
24.1.2 定义异步方法:解决方案 502
24.1.3 定义返回值的异步方法 507
24.1.4 异步方法和Windows Runtime
API 508
24.2 用PLINQ进行并行数据访问 510
24.2.1 用PLINQ增强遍历集合时的
性能 511
24.2.2 取消PLINQ查询 515
24.3 同步对数据的并发访问 515
24.3.1 锁定数据 518
24.3.2 用于协调任务的同步基元 518
24.3.3 取消同步 521
24.3.4 并发集合类 521
24.3.5 使用并发集合和锁来实现
线程安全的数据访问 522
小结 531
第24章快速参考 531
第25章 实现Windows Store应用
程序的用户界面 534
25.1 什么是Windows Store应用 534
25.2 使用空白模板构建Windows Store
应用 537
25.2.1 实现可伸缩的用户界面 539
25.2.2 向用户界面应用样式 565
小结 573
第25章快速参考 573
第26章 在Windows Store应用程序中
显示和搜索数据 574
26.1 实现Model-View-ViewModel
模式 574
26.1.1 通过数据绑定显示数据 575
26.1.2 通过数据绑定修改数据 580
26.1.3 为ComboBox控件使用
数据绑定 584
26.1.4 创建ViewModel 586
26.1.5 向ViewModel添加命令 590
26.2 Windows 8合约 600
26.2.1 实现搜索合约 600
26.2.2 导航至所选项 609
26.2.3 从搜索超级按钮启动程序 612
小结 614
第26章快速参考 616
第27章 在Windows Store应用程序中
访问远程数据库 618
27.1 从数据库获取数据 618
27.1.1 创建实体模型 620
27.1.2 创建和使用数据服务 624
27.2 插入、更新和删除数据 635
27.2.1 通过WCF Data Service插入、
更新和删除 635
27.2.2 报告错误和更新UI 644
小结 651
第27章快速参考 652
XVI
Visual C# 2012从入门到精通
XV
目录