第一部分 C#基础 2
第1章 .NET Framework和C# 2
1.1 .NET Framework 2
1.1.1 公共语言运行时 4
1.1.2 Framework类库 6
1.1.3 并行计算平台 8
1.1.4 动态语言运行时 9
1.2 C#语言 9
1.2.1 类型 10
1.2.2 语句和表达式 10
1.2.3 变量和常量 11
1.2.4 标识符和关键字 13
1.3 Visual Studio 2010 14
1.4 编写第一个程序 16
1.4.1 新建项目 16
1.4.2 添加程序语句 17
1.4.3 运行应用程序 18
1.5 总结 18
1.6 问与答 19
1.7 作业 19
1.7.1 测验 19
1.7.2 答案 20
1.7.3 练习 21
第2章 理解C#类型 22
2.1 类型 22
2.2 预定义类型 23
2.3 运算符 30
2.3.1 算术运算符和赋值运算符 31
2.3.2 关系运算符 32
2.3.3 逻辑运算符 32
2.3.4 条件运算符 33
2.4 默认值 34
2.5 null和可以为null的类型 35
2.6 强制转换与转换 36
2.7 总结 38
2.8 问与答 39
2.9 作业 39
2.9.1 测验 39
2.9.2 答案 40
2.9.3 练习 40
第3章 理解C#类和对象 41
3.1 面向对象编程 41
3.2 面向组件编程 42
3.3 C#类 42
3.4 作用域和声明空间 43
3.4.1 访问性 44
3.4.2 字段和常量 45
3.4.3 属性 46
3.4.4 方法 49
3.4.5 实例化类 54
3.5 嵌套类 57
3.6 分部类 57
3.7 静态类 57
3.8 对象初始值设定项 58
3.9 总结 59
3.10 问与答 59
3.11 作业 60
3.11.1 测验 60
3.11.2 答案 60
3.11.3 练习 61
第4章 继承、接口和抽象类 62
4.1 继承和多态 62
4.2 抽象类和抽象成员 69
4.3 接口 70
4.4 总结 73
4.5 问与答 73
4.6 作业 74
4.6.1 测验 74
4.6.2 答案 74
4.6.3 练习 75
第5章 创建枚举类型和结构 76
5.1 枚举类型 76
5.2 结构 80
5.2.1 方法 81
5.2.2 构造和初始化 84
5.3 总结 85
5.4 问与答 85
5.5 作业 86
5.5.1 测验 86
5.5.2 答案 86
5.5.3 练习 86
第6章 事件及其处理 89
6.1 理解事件 89
6.2 订阅和取消订阅 90
6.3 发布事件 93
6.4 引发事件 94
6.5 总结 96
6.6 问与答 96
6.7 作业 97
6.7.1 测验 97
6.7.2 答案 97
6.7.3 练习 97
第二部分 C#编程 100
第7章 控制程序流程 100
7.1 选择语句 100
7.1.1 if语句 100
7.1.2 switch语句 102
7.2 迭代语句 104
7.2.1 while语句 105
7.2.2 do语句 105
7.2.3 for语句 106
7.2.4 foreach语句 108
7.3 跳转语句 109
7.3.1 break语句 109
7.3.2 continue语句 110
7.3.3 return语句 111
7.4 总结 111
7.5 问与答 111
7.6 作业 111
7.6.1 测验 111
7.6.2 答案 112
7.6.3 练习 113
第8章 使用字符串和正则表达式 114
8.1 字符串 114
8.1.1 空字符串 116
8.1.2 字符串操作 117
8.2 使用StringBuilder创建可变的字符串 121
8.3 类型格式化 122
8.3.1 标准格式字符串 123
8.3.2 自定义格式字符串 125
8.3.3 复合格式化 126
8.4 正则表达式 127
8.4.1 C#中的正则表达式类 128
8.4.2 使用正则表达式验证字符串 129
8.4.3 使用正则表达式搜索子串 129
8.5 总结 129
8.6 问与答 129
8.7 作业 130
8.7.1 测验 130
8.7.2 答案 131
8.7.3 练习 131
第9章 使用数组和集合 132
9.1 数组 132
9.1.1 数组索引 134
9.1.2 数组初始化 134
9.1.3 System.Array类 136
9.2 索引器 136
9.3 泛型集合 138
9.3.1 列表 138
9.3.2 Collection<T> 140
9.3.3 字典 142
9.3.4 集 144
9.3.5 堆栈和队列 145
9.4 集合初始值设定项 147
9.5 集合接口 148
9.6 可枚举的对象和迭代器 149
9.7 总结 151
9.8 问与答 151
9.9 作业 152
9.9.1 测验 152
9.9.2 答案 152
9.9.3 练习 152
第10章 使用异常处理错误 154
10.1 理解异常 154
10.2 引发异常 156
10.3 处理异常 157
10.4 重新引发捕获的异常 162
10.5 溢出和整型算术运算 163
10.6 总结 164
10.7 问与答 165
10.8 作业 165
10.8.1 测验 165
10.8.2 答案 165
10.8.3 练习 166
第11章 理解泛型 167
11.1 为何应使用泛型 168
11.1.1 理解泛型类型参数 171
11.1.2 泛型类型的默认值 172
11.2 使用泛型方法 172
11.3 创建泛型类 174
11.4 结合使用泛型和数组 176
11.5 使用元组 179
11.6 总结 179
11.7 问与答 180
11.8 作业 180
11.8.1 测验 180
11.8.2 答案 180
11.8.3 练习 181
第12章 理解查询表达式 183
12.1 LINQ简介 183
12.1.1 选择数据 184
12.1.2 筛选数据 186
12.1.3 对数据进行分组和排序 187
12.1.4 联接数据 189
12.1.5 数据平坦化 190
12.2 标准查询运算符方法 191
12.3 Lambda 192
12.4 延迟执行 195
12.5 总结 195
12.6 问与答 196
12.7 作业 196
12.7.1 测验 196
12.7.2 答案 196
12.7.3 练习 196
第三部分 使用数据 198
第13章 使用文件和流 198
13.1 文件和目录 198
13.1.1 使用路径 199
13.1.2 特殊目录 199
13.1.3 DirectoryInfo和FileInfo类 200
13.1.4 Directory和File类 203
13.2 读写数据 206
13.2.1 二进制文件 206
13.2.2 缓冲流 207
13.2.3 文本文件 208
13.2.4 使用File类读写数据 209
13.3 总结 211
13.4 问与答 211
13.5 作业 211
13.5.1 测验 211
13.5.2 答案 212
13.5.3 练习 212
第14章 使用XML 213
14.1 理解XML DOM 214
14.2 使用LINQ to XML 214
14.2.1 XDocument 215
14.2.2 XElement和XAttribute 215
14.2.3 XName和XNamespace 217
14.3 选择和查询XML 220
14.4 修改XML 222
14.5 总结 224
14.6 问与答 224
14.7 作业 225
14.7.1 测验 225
14.7.2 答案 225
14.7.3 练习 225
第15章 使用数据库 226
15.1 先决条件 226
15.2 理解ADO.NET 227
15.3 理解LINQ to ADO.NET 229
15.3.1 LINQ to DataSet 230
15.3.2 LINQ to SQL 231
15.4 总结 236
15.5 问与答 236
15.6 作业 237
15.6.1 测验 237
15.6.2 答案 237
15.6.3 练习 237
第四部分 使用Visual Studio创建应用程序 240
第16章 在Visual Studio中调试程序 240
16.1 注释代码 240
16.2 编译错误和运行错误 242
16.3 在Visual Studio中调试程序 243
16.3.1 变量窗口 244
16.3.2 使用数据提示 245
16.3.3 使用即时窗口 246
16.3.4 理解断点 246
16.3.5 控制程序执行 247
16.4 可视化数据 249
16.5 总结 250
16.6 问与答 250
16.7 作业 250
16.7.1 测验 250
16.7.2 答案 250
16.7.3 练习 251
第17章 创建Windows应用程序 252
17.1 理解WPF 252
17.1.1 使用标记和代码隐藏 253
17.1.2 应用程序 254
17.1.3 理解WPF布局 255
17.1.4 使用图形、动画和媒体 256
17.1.5 理解文本、版式和文档 256
17.1.6 数据绑定 257
17.2 创建WPF应用程序 257
17.3 设置布局的样式 264
17.4 总结 266
17.5 问与答 266
17.6 作业 266
17.6.1 测验 266
17.6.2 答案 266
17.6.3 练习 266
第18章 使用数据绑定和验证 267
18.1 理解数据绑定 267
18.2 转换数据 270
18.3 绑定到集合 274
18.4 使用数据模板 277
18.5 验证数据 278
18.6 总结 280
18.7 问与答 281
18.8 作业 281
18.8.1 测验 281
18.8.2 答案 281
18.8.3 练习 282
第19章 创建Web应用程序 283
19.1 理解Web应用程序架构 283
19.2 使用ASP.NET 284
19.3 创建Web应用程序 286
19.3.1 创建布局 288
19.3.2 设置布局的样式 289
19.3.3 理解数据绑定 291
19.4 理解数据验证 292
19.5 总结 294
19.6 问与答 295
19.7 作业 295
19.7.1 测验 295
19.7.2 答案 295
19.7.3 练习 295
第五部分 深入探索 298
第20章 特性编程 298
20.1 理解特性 298
20.2 使用常见特性 300
20.2.1 特性Obsolete 300
20.2.2 特性Conditional 301
20.2.3 全局特性 301
20.3 使用自定义特性 302
20.4 在运行阶段访问特性 303
20.5 总结 304
20.6 问与答 304
20.7 作业 305
20.7.1 测验 305
20.7.2 答案 305
20.7.3 练习 305
第21章 动态类型和语言互操作性 306
21.1 使用动态类型 306
21.1.1 转换 308
21.1.2 动态重载解析 308
21.2 理解DLR 309
21.3 与COM互操作 312
21.4 使用反射进行互操作 313
21.5 总结 313
21.6 问与答 314
21.7 作业 314
21.7.1 测验 314
21.7.2 答案 314
21.7.3 练习 314
第22章 内存组织和垃圾收集 315
22.1 内存组织 315
22.2 垃圾收集 316
22.3 理解IDisposable 316
22.4 使用释放模式 318
22.5 声明和使用终结器 319
22.6 总结 320
22.7 问与答 320
22.8 作业 321
22.8.1 测验 321
22.8.2 答案 321
22.8.3 练习 321
第23章 理解线程、并发性和并行 322
23.1 理解线程和线程处理 322
23.2 并发性和同步 323
23.2.1 使用锁 324
23.2.2 使用通知 325
23.2.3 互锁操作 326
23.2.4 其他同步基元 326
23.3 理解任务并行库 327
23.3.1 数据并行 327
23.3.2 任务并行 328
23.4 使用并行LINQ 330
23.5 潜在的陷阱 331
23.6 总结 331
23.7 问与答 332
23.8 作业 332
23.8.1 测验 332
23.8.2 答案 332
23.8.3 练习 333
第24章 Silverlight、PowerShell和实体框架 334
24.1 理解实体框架 334
24.2 PowerShell简介 336
24.3 Silverlight 337
24.4 总结 337