第1章 .NET Framework 2.0简介 1
1.1 .NET Framework概述 1
1.2 .NET Framework的结构 3
1.2.1 公共语言运行库 3
1.2.2 .NET Framework类库 3
1.3 常见的.NET Framework应用程序 5
1.3.1 ASP.NET Web应用程序 5
1.3.2 Windows窗体应用程序 6
1.3.3 ADO.NET 7
1.3.4 分布式应用程序 7
1.4 .NET Framework的运行环境 8
1.5 小结 9
1.6 习题 9
第2章 公共语言运行库和类型 10
2.1 构建托管代码:通用类型系统 10
2.2 通用类型系统 10
2.2.1 值类型和引用类型 11
2.2.2 值类型和引用类型之间的相互转换:装箱和拆箱 12
2.2.3 类型转换 14
2.3 公共语言规范 15
2.4 特殊系统类型 16
2.4.1 泛型 16
2.4.2 Nullable类型 19
2.5 小结 21
2.6 实验 21
2.7 习题 22
第3章 托管代码的编译和执行 24
3.1 编译和执行概述 24
3.2 编译托管代码 25
3.2.1 Microsoft中间语言 25
3.2.2 元数据 26
3.2.3 属性 27
3.3 组织托管代码:程序集 27
3.3.1 程序集的元数据:清单 28
3.3.2 程序集分类 29
3.4 执行托管代码 30
3.4.1 加载程序集 30
3.4.2 编译MSIL 31
3.4.3 垃圾回收 33
3.4.4 终结器 34
3.4.5 应用程序域 35
3.5 小结 36
3.6 实验 36
3.7 习题 36
第4章 委托和事件 37
4.1 委托 37
4.1.1 使用Delegate类间接调用应用程序方法 39
4.1.2 使用新的C# 2.0技术增强委托行为 45
4.2 事件 48
4.2.1 使用事件的好处 48
4.2.2 事件的工作方式 49
4.2.3 使用Event语句创建事件 49
4.2.4 EventHandler委托的实现 50
4.2.5 自定义事件参数类 52
4.2.6 事件和委托的关系 54
4.3 小结 54
4.4 实验 55
4.5 习题 55
第5章 读取和写入文件 58
5.1 管理文件系统 58
5.1.1 使用Path类访问文件路径 58
5.1.2 使用File和FileInfo类访问文件 60
5.1.3 使用Directory和DirectoryInfo类访问目录 62
5.1.4 使用DriveInfo类访问驱动器 64
5.1.5 FileSystemWatcher类 65
5.2 使用字节流 68
5.2.1 使用Stream类管理字节流 69
5.2.2 使用FileStream类管理文件数据 70
5.2.3 使用MemoryStream类管理内存数据 70
5.2.4 使用BufferedStream类提高流性能 71
5.3 压缩和保护流信息 72
5.3.1 压缩和解压缩 72
5.3.2 独立存储 79
5.3.3 使用独立存储类保护流信息 80
5.4 管理应用程序数据 83
5.4.1 文本、流、字符串和二进制数据 84
5.4.2 管理文本数据和字符串 84
5.4.3 管理字符串 86
5.4.4 使用BinaryReader和BinaryWriter类管理二进制数据 88
5.5 高效操作字符串 91
5.5.1 字符串处理 91
5.5.2 使用StringBuilder类高效操作字符串 91
5.6 使用正则表达式 95
5.6.1 正则表达式的概念 95
5.6.2 使用正则表达式类分析文本模式 98
5.7 小结 103
5.8 实验 104
5.9 习题 104
第6章 集合和泛型 107
6.1 集合和集合接口 107
6.1.1 集合 107
6.1.2 集合接口 107
6.2 使用主要集合类型 109
6.2.1 通过迭代器循环访问类的成员 110
6.2.2 根据键/值对和比较器访问引用类型 114
6.3 使用泛型集合 118
6.3.1 使用泛型List类型创建类型安全的集合 119
6.3.2 使用泛型Stack集合和Queue集合 120
6.4 使用专用集合 122
6.4.1 StringCollection类 123
6.4.2 StringDictionary类 124
6.4.3 StringEnumerator类 125
6.4.4 CollectionUtil类 125
6.4.5 ListDictionary类 126
6.4.6 HybridDictionary类 127
6.4.7 OrderedDictionary类 129
6.4.8 NameValueCollection类 129
6.4.9 使用专用位结构在内存中高效地存储数据 130
6.5 使用集合基类 133
6.5.1 使用集合基类创建自定义集合 133
6.5.2 CollectionBase类 134
6.5.3 ReadOnlyCollectionBase类 136
6.5.4 DictionaryBase类 138
6.6 小结 141
6.7 实验 142
6.8 习题 142
第7章 数据的序列化 144
7.1 生成序列化的二进制格式和SOAP格式 144
7.1.1 BinaryFormatter类的成员 146
7.1.2 SoapFormatter类的成员 147
7.2 生成序列化的XML格式 148
7.2.1 使用XmlSerializer类将对象序列化为XML格式 149
7.2.2 使用XML序列化属性控制生成的XML 150
7.3 创建自定义序列化类 158
7.3.1 使用序列化类型收集序列化信息 158
7.3.2 使用序列化接口创建自定义类 162
7.3.3 使用格式化程序类将数据转换为序列化格式 177
7.3.4 使用事件处理程序属性处理序列化事件 192
7.3.5 使用ObjectManager类管理反序列化的对象 208
7.4 小结 215
7.5 实验 216
7.6 习题 216
第8章 GDI+ 218
8.1 使用图形、画笔、钢笔、颜色和字体 218
8.1.1 图形设备接口 219
8.1.2 使用Graphics类创建绘制表面 219
8.1.3 使用Pen类绘制直线 223
8.1.4 使用Brush类为图形对象填充颜色 225
8.1.5 使用Color类为图形对象应用颜色 229
8.1.6 使用Font类在绘制表面写入文本 234
8.2 操作图形对象的形状和大小 239
8.2.1 使用Rectangle类型绘制图形形状 239
8.2.2 使用Point和Size类型指定对象大小 242
8.3 使用图像、位图和图标 243
8.3.1 使用Image和Bitmap类将图像添加到绘制区域 243
8.3.2 使用Icon类将图标插入绘制表面 246
8.4 小结 248
8.5 实验 248
8.6 习题 248
第9章 在.NET Framework 2.0中实现加密 250
9.1 加密数据 250
9.1.1 数据加密和数据解密 250
9.1.2 使用对称算法类执行对称加密 251
9.1.3 使用非对称类执行非对称加密 260
9.1.4 使用SslStream类保护TCP/IP通信的安全 264
9.2 计算数据的哈希值 278
9.3 加密行为的扩展 292
9.3.1 使用加密类管理配置信息 292
9.3.2 使用DPAPI类保护文件和内存中的数据 296
9.3.3 使用CspParameters类自定义CSP对象的行为 298
9.3.4 使用CryptoAPITransform类修改加密信息 300
9.3.5 为加密函数生成随机数 302
9.4 小结 303
9.5 实验 303
9.6 习题 303
第10章 COM组件与.NET Framework程序集之间的交互操作 306
10.1 使用Interop服务访问COM组件 306
10.1.1 通过导入类型库创建Interop程序集 306
10.1.2 在托管代码中使用COM的数据类型与COM组件进行交互操作 314
10.1.3 编译和部署Interop应用程序的方法 314
10.2 使用Interop服务向COM组件公开程序集 315
10.2.1 与COM组件进行交互操作的.NET Framework类型 315
10.2.2 应用属性控制COM互操作性的类型转换 318
10.2.3 打包和部署程序集以实现与COM组件的互操作 324
10.3 使用平台调用服务访问COM组件 327
10.3.1 创建保存Win32 API函数的.NET Framework类 327
10.3.2 在托管代码中创建原型 328
10.3.3 在托管代码中调用COMDLL函数 331
10.3.4 将Exception类映射到HRESULT 333
10.3.5 平台调用封送数据的方法 335
10.3.6 使用Marshal和Marshal-AsAttribute类封送数据 336
10.4 小结 340
10.5 实验 340
10.6 习题 341
第11章 使用类型元数据 343
11.1 通过预定义的Assembly类使用类型元数据 343
11.1.1 反射 343
11.1.2 使用Assembly类访问类型元数据 344
11.1.3 使用MemberInfo类研究类型元数据 348
11.1.4 使用MethodBody类检查方法的内容 358
11.1.5 使用程序集属性向元数据添加自定义信息 360
11.2 通过自定义类动态使用程序集 362
11.2.1 使用生成器类动态创建程序集 363
11.2.2 绑定 371
11.2.3 使用绑定类型控制成员绑定 372
11.3 小结 377
11.4 实验 377
11.5 习题 377
第12章 创建多线程应用程序和应用程序域 379
12.1 管理同步环境中的线程 379
12.1.1 线程 379
12.1.2 使用Thread类管理线程 380
12.1.3 使用ThreadPool类管理线程池 386
12.2 管理异步环境中的线程 388
12.2.1 异步编程 389
12.2.2 使用异步类管理回调方法 390
12.2.3 通过异步调用迁移线程的执行上下文 392
12.2.4 使用Synchronization-Context类管理异步环境 396
12.3 应用程序域的工作原理 399
12.3.1 应用程序域 399
12.3.2 使用AppDomainSetup类配置应用程序域 400
12.3.3 使用AppDomain类创建应用程序域 401
12.3.4 从应用程序域检索设置信息 403
12.3.5 将程序集加载到应用程序域 404
12.3.6 使用AppDomain类卸载应用程序域 405
12.4 小结 407
12.5 实验 407
12.6 习题 407
第13章 代码访问安全性 410
13.1 实现代码访问安全性 410
13.1.1 代码访问安全性 410
13.1.2 使用.NET Framework配置工具配置安全性 412
13.1.3 使用证据类型确定程序集权限 414
13.2 管理安全性策略 417
13.2.1 安全性策略 417
13.2.2 使用SecurityManager类配置安全性策略 419
13.2.3 使用策略类管理安全性策略 420
13.2.4 使用代码组类配置代码组 422
13.2.5 使用条件类管理代码组成员 425
13.2.6 使用安全性策略接口创建自定义安全性策略 430
13.3 管理权限 437
13.3.1 权限 438
13.3.2 使用CodeAccessPermission类实现权限类型 438
13.3.3 配置代码访问安全性权限 440
13.3.4 使用权限集类管理权限组 448
13.4 管理访问控制 452
13.4.1 访问控制基类的角色 452
13.4.2 使用访问控制列表类管理用户对资源的访问 453
13.4.3 使用资源安全类保护资源 458
13.5 管理用户标识信息 466
13.5.1 IIdentity接口和IPrincipal接口的角色 466
13.5.2 使用GenericIdentity类管理用户标识 467
13.5.3 使用Windows标识类确定Windows用户身份 470
13.5.4 使用IdentityReference类收集用户标识信息 472
13.5.5 使用WindowsImpersonationContext类临时模拟用户 476
13.6 小结 479
13.7 实验 479
13.8 习题 480
第14章 监视和调试应用程序 483
14.1 管理事件日志 483
14.2 应用程序进程的工作原理 485
14.2.1 检索所有正在运行的进程的列表 485
14.2.2 检索关于当前进程的信息 487
14.2.3 检索进程所使用的所有模块的列表 489
14.2.4 启动和停止应用程序进程 491
14.3 管理应用程序的性能 493
14.3.1 使用性能监视器监视应用程序的性能 493
14.3.2 使用性能计数器类自定义性能信息 494
14.4 调试应用程序 497
14.4.1 使用可视化调试器检查应用程序错误 497
14.4.2 使用Debugger类以编程方式进行调试 498
14.4.3 使用Debug类以编程方式进行调试 499
14.4.4 使用Debugger属性配置用户定义的类型 502
14.4.5 StackFrame类 503
14.4.6 StackTrace类 504
14.5 跟踪应用程序 507
14.5.1 使用Trace类以编程方式跟踪应用程序 507
14.5.2 使用TraceSource类确定跟踪源 510
14.5.3 使用TraceSwitch类配置跟踪输出 511
14.5.4 使用TraceListener类定向跟踪输出 511
14.5.5 使用CorrelationManager类分类跟踪信息 515
14.6 嵌入管理信息和事件 517
14.6.1 管理类 518
14.6.2 为应用程序预订管理事件 518
14.6.3 通过WMI检索系统资源信息 521
14.7 小结 524
14.8 实验 525
14.9 习题 525
第15章 使用服务应用程序和电子邮件消息 527
15.1 使用Windows服务应用程序 527
15.1.1 服务应用程序 527
15.1.2 使用ServiceBase类创建Windows服务 528
15.1.3 使用ServiceInstaller类安装服务应用程序 536
15.2 使用ServiceController类控制Windows服务 540
15.3 使用电子邮件消息 542
15.3.1 使用邮件类创建电子邮件消息 542
15.3.2 使用MailAttachment类向电子邮件消息添加资源 545
15.3.3 使用SmtpClient类发送电子邮件消息 550
15.3.4 使用SMTP异常类处理电子邮件异常 552
15.3.5 使用SendCompleteEventHandler处理电子邮件完成事件 554
15.4 小结 556
15.5 实验 556
15.6 习题 556
第16章 创建全球化应用程序 558
16.1 使用全球化类处理文化环境信息 558
16.1.1 全球化 559
16.1.2 使用CultureInfo类访问文化环境 560
16.1.3 使用RegionInfo类访问区域信息 564
16.1.4 使用DateTimeFormatInfo类格式化某种文化环境中的日期/时间值 567
16.1.5 使用NumberFormatInfo类格式化数字值 571
16.1.6 使用CompareInfo类比较文化环境信息 575
16.2 创建自定义的文化环境 579
16.3 使用主要编码类 581
16.3.1 字符编码 582
16.3.2 使用Encoding和EncodingInfo类对字符进行编码 583
16.3.3 使用ASCII和Unicode标准对字符进行编码 585
16.4 使用高级编码类 588
16.4.1 使用Encoder和EncoderFallback类处理故障事件 589
16.4.2 使用Decoder和DecoderFallback类处理故障事件 589
16.5 小结 592
16.6 实验 592
16.7 习题 592
第17章 配置和安装程序集 595
17.1 安装程序集 595
17.1.1 创建程序集 596
17.1.2 使用全局程序集缓存共享程序集 600
17.1.3 安装程序集的方法 602
17.2 配置程序集 609
17.2.1 配置文件介绍 609
17.2.2 访问和管理配置文件 610
17.2.3 配置文件高级应用 615
17.3 小结 617
17.4 实验 617
17.5 习题 617
词汇表 619