第Ⅰ部分 核心语言 3
第1章 Visual C#编程介绍 3
1.1 语言的起源 4
1.2 C#核心语言特征 6
1.2.1 符号与标记 7
1.2.2 关键字 20
1.2.3 基元 23
1.3 C#示例程序 23
1.4 命名空间 25
1.5 Main入口点 27
1.6 局部变量 28
1.7 可空类型 29
1.8 表达式 29
1.9 选择语句 30
1.10 迭代语句 32
1.11 类 34
第2章 类型 35
2.1 类 36
2.1.1 类成员 37
2.1.2 成员函数 42
2.2 结构 59
2.3 枚举 60
2.4 恒等与等价 62
2.5 类的细化 63
第3章 继承 64
3.1 继承示例 68
跨语言继承 68
3.2 System.Object 70
3.2.1 Object.Equals方法 71
3.2.3 Object.GetType方法 72
3.2.2 Object.GetHashCode方法 72
3.2.4 Object.ToString方法 73
3.2.5 Object.MemberwiseClone方法 73
3.2.6 Object.ReferenceEquals方法 74
3.3 Employee类 75
3.4 实现继承 76
3.5 重写 77
3.5.1 virtual和override关键字 77
3.5.2 重载与重写 78
3.5.3 重写事件 79
3.6 new修饰符 79
3.7 抽象类 83
3.8 密封类 84
3.9 构造函数和析构函数 85
3.10 接口 87
3.10.1 实现接口 89
3.10.2 接口成员的显式实现 90
3.10.3 接口的再实现 93
3.1 1 多态性 94
3.11.1 接口多态性 97
3.11.2 new修饰符和多态性 98
3.12 强制转换 99
3.13 属性继承 103
314 Visual Studio.NET 2005 104
第Ⅱ部分 核心功能 107
第4章 Visual Studio 2005介绍 107
4.1 集成开发环境 107
4.1.1 起始页 108
4.1.2 社区集成 108
4.1.3 创建项目 109
4.1.4 解决方案资源管理器 109
4.1.5 添加引用 112
4.1.7 Visual Studio中的管理窗口 113
4.1.6 数据菜单 113
4.1.8 自动恢复 114
4.2 类层次结构 115
4.2.1 类视图窗口 115
4.2.2 对象浏览器 116
4.2.3 类关系图 116
4.2.4 继承 119
4.2.5 关联 120
4.2.6 类关系图演练 121
4.2.7 “错误列表”窗口 124
4.3.1 IntelliSense 125
4.3 代码编辑器 125
4.3.2 外侧代码 126
4.3.3 字体和颜色格式 126
4.3.4 源代码格式 127
4.3.5 更改跟踪 127
4.3.6 用户配置文件 128
4.4 代码段 129
4.4.1 复制和粘贴 129
4.4.2 插入代码段 130
4.4.3 默认代码段 131
4.4.4 代码段管理器 132
4.4.5 创建代码段 133
4.5 重构 138
4.6 生成和部署 142
4.7 MSBuild 142
4.7.1 项 142
4.7.2 属性 143
4.7.3 任务 143
4.7.4 项目文件 144
4.7.5 MSBuild演练 145
4.8 ClickOnce部署 146
4.9 数组和集合 151
第5章 数组和集合 152
5.1 数组 154
5.1.1 数组元素 155
5.1.2 多维数组 155
5.1.3 交错数组 157
5.1.4 System.Array 158
5.1.5 System.Array属性 165
5.1.6 params关键字 170
5.1.7 数组转换 172
5.2 集合 173
5.2.1 数组列表集合 174
5.2.2 位数组集合 177
5.2.3 哈希表集合 179
5.2.4 队列集合 183
5.2.5 堆栈集合 187
5.2.6 特殊集合 188
5.3 泛型 188
第6章 泛型 189
6.1.1 类型参数 192
6.1 泛型类型 192
6.1.2 构造类型 195
6.2 泛型方法 196
6.2.1 重载方法 196
6.2.2 泛型类型的this引用 198
6.3 约束 198
6.3.1 派生约束 199
6.3.2 接口约束 203
6.3.3 值类型约束 204
6.3.4 引用类型约束 205
6.3.5 默认构造函数约束 205
6.4 强制类型转换 206
6.5 继承 207
6.5.1 重写方法 208
6.5.2 嵌套类型 209
6.6 静态成员 210
6.6.1 运算符函数 211
6.6.2 序列化 212
6.6.3 泛型内部机理 214
6.6.4 泛型集合 215
6.7 枚举器 215
第7章 迭代器 216
7.1.1 枚举器 217
7.1 枚举对象 217
7.1.2 枚举器例子 219
7.1.3 枚举器例子(静态集合) 220
7.1.4 枚举器举例(版本集合) 221
7.1.5 IEnumerator问题 223
7.2 泛型枚举器 223
7.2.1 IEnumerable<T>接口 223
7.2.2 IEnumerator<T>接口 224
7.2.3 泛型枚举器举例(版本集合) 225
7.3.1 yield语句 227
7.3 迭代器 227
7.3.2 迭代器块 228
7.3.3 迭代器内部机理 229
7.3.4 迭代器举例 230
7.4 委托和事件 233
第Ⅲ部分 C#语言详述 237
第8章 委托和事件 237
8.1 委托 238
8.1.1 定义一个委托 239
8.1.2 创建一个委托 239
8.1.4 委托数组 241
8.1.3 调用一个委托 241
8.1.5 异步调用 247
8.1.6 异步委托关系图 250
8.1.7 异常 251
8.2 匿名方法 252
8.2.1 外部变量 254
8.2.2 泛型匿名方法 256
8.2.3 匿名方法的限制 256
8.3 事件 256
8.3.1 发布一个事件 257
8.3.3 引发一个事件 258
8.3.2 订阅 258
8.4 异常处理 260
第9章 异常处理 261
9.1 异常举例 262
9.2 公共异常模型 262
9.3 结构化的异常处理 263
9.3.1 try语句 263
9.3.2 catch语句 264
9.3.3 finally语句 266
9.3.5 嵌套try块 267
9.3.4 异常信息表 267
9.4 System.Exception 269
9.4.1 System.Exception函数 269
9.4.2 System.Exception属性 270
9.4.3 应用程序异常 271
9.4.4 异常转化 273
9.4.5 COM互操作性异常 273
9.5 远程异常 277
9.6 未处理异常 278
9.6.1 Application.ThreadException 279
9.6.2 AppDomain.Unhandled-Exception 280
9.7.1 异常助手 281
9.7 在Visual Studio中管理异常 281
9.7.2 异常对话框 282
9.8 元数据和反射 282
第Ⅳ部分 调试 285
第10章 元数据和反射 285
10.1 元数据 285
10.1.1 标记 287
10.1.2 元数据堆 287
10.1.4 元数据验证 288
10.1.3 流 288
10.1.5 ILDASM工具 289
10.2 反射 293
10.2.1 获得一个Type对象 293
10.2.2 加载程序集 295
10.2.3 浏览Type信息 297
10.2.4 动态调用 300
10.2.5 类型的创建 304
10.2.6 晚期绑定 306
10.3.1 IsGeneric和IsGenericTypeDefinition 308
10.3 反射和泛型 308
10.2.7 函数调用性能 308
10.3.2 typeof 309
10.3.3 GetType 309
10.3.4 GetGenericTypeDefinition 310
10.3.5 GetCenericArguments 311
10.3.6 创建泛型类型 312
10.3.7 反射的安全性 313
10.3.8 属性 313
10.3.9 创建一个自定义属性 316
10.3.10 属性和反射 319
10.4 MSIL 321
第11章 MSIL编程 322
11.1 “Hello World”应用程序 324
11.2 计算堆栈 325
11.3 MSIL深度探索 326
11.3.1 指令 326
11.3.2 程序集指令 326
11.3.3 类指令 328
11.3.4 方法指令 331
11.3.5 MSIL指令 333
11.4 复杂任务 335
11.5 分支 340
11.6 数组 343
11.7 算术指令 345
11.7.1 转换操作 345
11.7.2 异常处理 346
11.7.3 其他操作 347
11.8 进程执行 348
11.9 用Visual Studio 2005进行调试 351
第12章 用Visual Studio 2005进行调试 352
12.1.1 附加到一个运行进程 353
12.1 调试Windows窗体的项目 353
12.1.2 调试控制台应用程序项目 355
12.1.3 调试类库项目 355
12.2 调试设置 355
12.2.1 调试和发布配置 355
12.2.2 配置管理器 356
12.3 调试设置 357
12.3.1 Visual Studio环境调试设置 357
12.3.2 解决方案的调试设置 361
12.3.3 一个项目的调试设置 361
12.4.1 数据提示 363
12.4.2 可视化工具 363
12.4 Visual Studio调试用户界面 363
12.5 断点 365
12.5.1 函数断点 365
12.5.2 “断点”窗口 367
12.5.3 跟踪点 370
12.5.4 断点符号 372
12.6 代码分步 372
12.6.1 分布命令 372
12.6.2 设定下一条语句演练 373
12.8.1 “断点”窗口 374
12.8.2 “输出”窗口 374
12.8 调试窗口 374
12.7 “调试”工具栏 374
12.8.3 “脚本资源管理器” 375
12.8.4 “监视”窗口 375
12.8.5 “自动”窗口 378
12.8.6 “局部变量”窗口 378
12.8.7 “即时”窗口 378
12.8.8 “调用堆栈”窗口 380
12.8.9 “线程”窗口 381
12.8.10 “模块”窗口 381
12.8.12 “内存”窗口 382
12.8.11 “进程”窗口 382
12.8.13 “反汇编”窗口 383
12.8.14 “寄存器”窗口 383
12.9 跟踪 384
12.9.1 跟踪示例 391
12.9.2 配置文件 393
12.9.3 有配置文件的跟踪示例 394
12.10 DebuggerDisplayAttribute 396
12.10.1 DebuggerBrowsable-Attribute 398
12.10.2 DebuggerTypeProxy-Attribute 399
12.11 转储文件 400
12.12 高级调试 401
第13章 高级调试 402
13.1 DebuggableAttribute属性 404
13.2 调试器 405
13.3 实时调试 406
13.4 托管调试器 408
13.4.1 MDbg演练 408
13.4.2 MDbg命令 411
13.5 WinDbg 413
13.6.1 SOS演练部分Ⅰ 419
13.6 Son of Strike(SOS) 419
13.6.2 SOS演练部分Ⅱ 422
13.7 转储 423
13.7.1 ADPlus 424
13.7.2 Dr.Watson 425
13.8 内存管理 428
13.8.1 引用树 429
13.8.2 代 431
13.8.3 终结 434
13.8.4 性能监试器 434
13.9 线程 435
13.10 异常 441
13.11 符号 442
13.11.1 Symsrv Symbol Server 443
13.11.2 应用程序符号 443
13.12 内存管理 444
第Ⅴ部分 高级概念 447
第14章 内存管理 447
14.1 非托管资源 448
14.1.1 垃圾回收概述 449
14.1.2 GC风格 452
14.2 终结器 454
14.2.1 终结器线程 458
14.2.2 终结器注意事项 458
14.3 IDisposable.Dispose 465
14.3.1 可处置模式 469
14.3.2 可处置模式的注意事项 470
14.3.3 处置内部对象 473
14.4 弱引用 475
14.4.1 弱引用内部机理 477
14.4.2 弱引用类 477
14.4.3 关键终结对象 477
14.4.4 约束执行区域 478
14.4.5 管理非托管资源 480
14.5 GC类 482
14.6 不安全代码 483
第15章 不安全代码 484
15.1 unsafe关键字 486
15.1.1 指针 487
15.1.2 指针参数和返回 490
15.1.3 平台调用 493
15.2 结语 504
附录A 运算符重载 505