第1部分C#基础 3
第1章.NET Framework和C 3
1.1.NET Framework 3
1.1.1公共语言运行时 4
1.1.2 Framework类库 6
1.1.3并行计算平台 8
1.1.4动态语言运行时 8
1.2 C#语言 9
1.2.1类型 10
1.2.2语句和表达式 10
1.2.3变量和常量 11
1.2.4标识符和关键字 13
1.3总结 14
1.4问与答 15
1.5作业 15
1.5.1测验 15
1.5.2答案 16
1.5.3练习 17
第2章Visual Studio简介 18
2.1 Visual Studio版本简介 19
2.2编写第一个程序 20
2.2.1新建项目 21
2.2.2添加程序语句 22
2.2.3运行应用程序 23
2.3在Visual Studio中调试 24
2.3.1编译错误和运行错误 24
2.3.2调试代码 25
2.3.3控制程序执行 29
2.4可视化数据 31
2.5注释代码 32
2.6总结 34
2.7问与答 34
2.8作业 34
2.8.1测验 34
2.8.2答案 35
2.8.3练习 35
第3章 理解C#类型 36
3.1类型概述 36
3.2预定义类型 37
3.3其他常用类型 40
3.3.1日期和时间 40
3.3.2全局唯一标识符(GUID) 42
3.3.3统一资源标识符(URI) 42
3.3.4大型整数和复数 43
3.4使用运算符 44
3.4.1算术运算符和赋值运算符 45
3.4.2关系运算符 46
3.4.3逻辑运算符 47
3.4.4条件运算符 48
3.5默认值 48
3.6 null和可以为null的类型 49
3.7强制转换与转换 51
3.8总结 53
3.9问与答 53
3.10作业 54
3.10.1测验 54
3.10.2答案 54
3.10.3练习 55
第4章 理解C#类和对象 56
4.1面向对象编程 56
4.2面向组件编程 57
4.3 C#类 57
4.4作用域和声明空间 58
4.4.1访问性 59
4.4.2字段和常量 60
4.4.3属性 61
4.4.4方法 64
4.4.5实例化类 70
4.5嵌套类 73
4.6分部类 73
4.7静态类 73
4.8对象初始值设定项 75
4.9总结 75
4.10问与答 76
4.11作业 76
4.11.1测验 76
4.11.2答案 77
4.11.3练习 77
第5章 继承、接口和抽象类 78
5.1继承和多态 78
5.2抽象类和抽象成员 86
5.3使用接口 87
5.4总结 90
5.5问与答 91
5.6作业 91
5.6.1测验 91
5.6.2答案 92
5.6.3练习 92
第6章 创建枚举类型和结构 93
6.1枚举类型 93
6.2使用结构 98
6.2.1定义结构的方法 99
6.2.2构造和初始化 102
6.3总结 104
6.4问与答 104
6.5作业 104
6.5.1测验 104
6.5.2答案 104
6.5.3练习 105
第7章 事件及其处理 106
7.1理解事件 106
7.2订阅和取消订阅 107
7.3发布事件 110
7.4引发事件 112
7.5总结 113
7.6问与答 114
7.7作业 114
7.7.1测验 114
7.7.2答案 114
7.7.3练习 115
第2部分C#编程 119
第8章 控制程序流程 119
8.1理解选择语句 119
8.1.1 if语句 119
8.1.2 switch语句 121
8.2迭代语句 124
8.2.1 while语句 124
8.2.2 do语句 125
8.2.3 for语句 126
8.2.4 foreach语句 127
8.3跳转语句 128
8.3.1 break语句 129
8.3.2 continue语句 130
8.3.3 return语句 131
8.4总结 131
8.5问与答 131
8.6作业 131
8.6.1测验 131
8.6.2答案 132
8.6.3练习 133
第9章 使用字符串和正则表达式 134
9.1字符串 134
9.1.1空字符串 136
9.1.2字符串操作 137
9.2使用StringBuilder创建可变字符串 141
9.3类型格式化 143
9.3.1标准格式字符串 143
9.3.2自定义格式字符串 145
9.3.3复合格式化 147
9.4正则表达式 148
9.4.1 C#中的正则表达式类 149
9.4.2使用正则表达式验证字符串 150
9.4.3使用正则表达式搜索子串 150
9.5总结 150
9.6问与答 151
9.7作业 151
9.7.1测验 151
9.7.2答案 152
9.7.3练习 153
第10章 使用数组和集合 154
10.1一维数组和多维数组 154
10.1.1数组索引 156
10.1.2数组初始化 157
10.1.3 System.Array类 158
10.2索引器 158
10.3泛型集合 160
10.3.1列表 160
10.3.2集合 162
10.3.3字典 164
10.3.4集(set) 166
10.3.5栈和队列 169
10.4集合初始值设定项 170
10.5集合接口 171
10.6可枚举的对象和迭代器 172
10.7总结 174
10.8问与答 174
10.9作业 175
10.9.1测验 175
10.9.2答案 176
10.9.3练习 176
第11章 使用异常处理错误 177
11.1理解异常 177
11.1.1 System.Exception 178
11.1.2使用标准异常 178
11.2引发异常 179
11.3处理异常 180
11.4重新引发捕获的异常 186
11.5溢出和整型算术运算 187
11.6异常、代码契约和参数验证 188
11.7总结 192
11.8问与答 192
11.9作业 193
11.9.1测验 193
11.9.2答案 193
11.9.3练习 193
第12章 理解泛型 195
12.1为何应使用泛型 195
12.1.1理解泛型类型参数 199
12.1.2泛型类型的默认值 200
12.2使用泛型方法 201
12.3创建泛型类 202
12.4结合使用泛型和数组 204
12.5泛型接口的可变性 205
12.6使用元组 207
12.7总结 208
12.8问与答 209
12.9作业 209
12.9.1测验 209
12.9.2答案 209
12.9.3练习 210
第13章 理解查询表达式 211
13.1 LINQ简介 211
13.2使用LINQ操作数据 212
13.2.1选择数据 213
13.2.2筛选数据 215
13.2.3对数据进行分组和排序 216
13.2.4联接数据 218
13.2.5数据平坦化 220
13.3标准查询运算符方法 221
13.3.1 Lambda 222
13.3.2预定义的委托 224
13.4延迟执行 225
13.5总结 225
13.6问与答 225
13.7作业 226
13.7.1测验 226
13.7.2答案 226
13.7.3练习 226
第3部分使用数据 229
第14章 使用文件和流 229
14.1文件和目录 229
14.1.1使用路径 229
14.1.2与Windows特殊目录交互 230
14.1.3 DirectoryInfo和FileInfo类 231
14.2读写数据 237
14.2.1二进制文件 238
14.2.2缓冲流 239
14.2.3文本文件 240
14.2.4使用File类读写数据 241
14.3总结 243
14.4问与答 243
14.5作业 243
14.5.1测验 243
14.5.2答案 244
14.5.3练习 244
第15章 使用XML 245
15.1理解XML DOM 246
15.2使用LINQ to XML 246
15.2.1 XDocument 247
15.2.2 XElement和XAttribute 247
15.2.3 XName和XNamespace 250
15.3选择和查询XML 252
15.4修改XML 255
15.5总结 257
15.6问与答 257
15.7作业 258
15.7.1测验 258
15.7.2答案 258
15.7.3练习 258
第16章 使用数据库 259
16.1先决条件 259
16.2理解ADO.NET 261
16.3理解LINQ to ADO.NET 265
16.3.1使用LINQ to DataSet 265
16.3.2使用LINQ to SQL 266
16.3.3使用LINQ to Entities 271
16.4总结 273
16.5问与答 273
16.6作业 274
16.6.1 测验 274
16.6.2答案 274
16.6.3练习 274
第4部分 使用Visual Studio创建应用程序 277
第17章 创建Windows应用程序 277
17.1理解WPF 277
17.1.1使用标记和代码隐藏 278
17.1.2应用程序 280
17.1.3理解WPF布局 280
17.1.4使用图形、动画和媒体 282
17.1.5理解文本、版式和文档 282
17.1.6数据绑定 282
17.2创建WPF应用程序 282
17.3设置布局的样式 289
17.4总结 291
17.5问与答 291
17.6作业 291
17.6.1测验 291
17.6.2答案 291
17.6.3练习 291
第18章 使用数据绑定和验证 292
18.1理解数据绑定 292
18.2转换数据 298
18.3验证数据 301
18.4使用数据模板 303
18.5总结 303
18.6问与答 304
18.7作业 304
18.7.1测验 304
18.7.2答案 305
18.7.3练习 305
第19章 创建Windows应用商店应用 306
19.1理解Windows Runtime 307
19.2 Windows应用商店应用简介 307
19.3异步地工作 309
19.4创建Windows应用商店应用 312
19.5总结 316
19.6问与答 316
19.7作业 316
19.7.1测验 316
19.7.2答案 317
19.7.3练习 317
第20章 创建Web应用程序 318
20.1理解Web应用程序架构 318
20.2使用ASP.NET 319
20.3创建Web应用程序 321
20.3.1创建布局 323
20.3.2设置布局的样式 325
20.3.3理解数据绑定 326
20.4理解数据验证 328
20.5总结 330
20.6问与答 330
20.7作业 330
20.7.1测验 330
20.7.2答案 330
20.7.3练习 330
第5部分 深人探索 333
第21章 特性编程 333
21.1理解特性 333
21.2使用调用方信息特性 335
21.3使用常见特性 337
21.3.1特性Obsolete 337
21.3.2特性Conditional 338
21.3.3全局特性 339
21.4使用自定义特性 339
21.5在运行阶段访问特性 340
21.6总结 341
21.7问与答 342
21.8作业 342
21.8.1测验 342
21.8.2答案 342
21.8.3练习 342
第22章 动态类型和语言互操作性 343
22.1使用动态类型 343
22.1.1转换 345
22.1.2动态重载解析 345
22.2理解DLR 346
22.3与COM互操作 349
22.4使用反射进行互操作 350
22.5总结 351
22.6问与答 351
22.7作业 351
22.7.1测验 351
22.7.2答案 352
22.7.3练习 352
第23章 内存组织和垃圾收集 353
23.1内存组织 353
23.2垃圾收集 354
23.3理解IDisposable 355
23.4使用释放模式 356
23.5声明和使用终结器 357
23.6总结 358
23.7问与答 358
23.8作业 359
23.8.1 测验 359
23.8.2答案 359
23.8.3练习 359
第24章 理解线程、并发和并行 360
24.1理解线程和线程处理 360
24.2并发和同步 361
24.2.1使用锁 362
24.2.2使用通知 363
24.2.3互锁操作 364
24.2.4其他同步原语 364
24.3理解任务并行库 365
24.3.1数据并行 365
24.3.2任务并行 367
24.4使用并行LINQ (PLINQ) 369
24.5潜在的陷阱 370
24.6总结 370
24.7问与答 371
24.8作业 371
24.8.1测验 371
24.8.2答案 372
24.8.3练习 372