1.1 窗口管理和定制 3
1.1.1 用Visual Studio.NET的“Developer配置文件”定制界面 3
第Ⅰ部分 Visual Studio.NET IDE简介 3
第1章 Visual Studio.NET IDE 3
1.1.2 配置快捷键 4
1.1.5 使用Visual Studio.NET 2003的可停靠窗口 5
1.1.4 最大化可视区域 5
1.1.3 过滤MSDN Help 5
1.2 Visual Studio.NET 2003的工具窗口 8
1.3.1 增强文本编辑器的功能 11
1.3 处理文档 11
1.3.2 找到需要的帮助 15
1.3.3 编辑HTML 17
1.3.4 编辑XML 19
1.4 使用外部工具 20
1.3.5 编辑二进制文件 20
1.5 小结 21
2.1 要再学另外一种编程语言 25
第2章 C#简介 25
第Ⅱ部分 语言基础 25
2.2.1 理解值类型 26
2.2 学习公共类型 26
2.2.3 引用类型与值类型的区别 27
2.2.2 理解引用类型 27
2.3 公共语言运行库 28
2.3.4 代码访问安全性 29
2.3.3 平台调用 29
2.3.1 多种语言,一个运行库 29
2.3.2 隔离性 29
2.4.1 引用计数 30
2.4 垃圾回收理论 30
2.3.5 JIT编译器 30
2.3.6 代码执行 30
2.3.7 COM互操作 30
2.3.8 Rotor:Microsoft通用语言基础结构的共享源代码 30
2.4.5 不确定的终止 31
2.4.4 部分回收 31
2.4.2 generation(代) 31
2.4.3 回收 31
2.4.6 使用IDisposable创建功能良好的对象 32
2.5 基类库简介 33
2.6 规范的“Hello World”示例 34
2.7 小结 36
3.3 合法的变量名 37
3.2 基本表达式 37
第3章 表达式和控制结构 37
3.1 表达式和控制结构简介 37
3.4 使用C#运算符 38
3.6.3 if控制结构 43
3.6.2 条件语句 43
3.5 前缀/后缀运算符 43
3.6 程序流程控制:控制结构 43
3.6.1 程序执行路径 43
3.6.5 短路计算 44
3.6.4 if/else控制结构组合 44
3.6.6 使用三元运算符 46
3.6.7 switch语句 47
3.7.1 for循环 49
3.7 循环 49
3.7.4 while循环 50
3.7.3 foreach语句 50
3.7.2 使用for语句 50
3.7.5 do..while循环 52
3.8 小结 53
4.1.2 格式化字符串 54
4.1.1 理解字符串的不变性 54
第4章 字符串与正则表达式 54
4.1 字符串基础 54
4.1.3 使用转义序列 58
4.1.6 截断字符 59
4.1.5 添加填充 59
4.1.4 定位子字符串 59
4.1.9 修改大小写 60
4.1.8 拆分字符串 60
4.1.7 替换字符 60
4.1.13 插入字符串 61
4.1.12 使用AppendFormat 61
4.1.10 StringBuilder 61
4.1.11 追加字符串 61
4.3 如何使用匹配 62
4.2 使用正则表达式 62
4.1.14 替换字符串和字符 62
4.1.15 移除子字符串 62
4.3.1 用正则表达式验证数据 65
4.3.2 匹配分组 66
4.4 小结 67
4.3.3 替换所匹配的字符串 67
5.1.1 一维数组和多维数组 68
5.1 使用数组 68
第5章 数组与集合 68
5.1.2 锯齿数组 70
5.1.3 将数组作为参数传递 71
5.2.1 基本集合接口 72
5.2 集合 72
5.2.2 遍历集合 73
5.3.1 使用ArrayList 74
5.3 基础类库中的集合 74
5.3.2 使用Stack 75
5.3.3 使用Hashtable 76
5.3.4 使用BitArray 77
5.3.6 使用SortedList 78
5.3.5 使用Queue 78
5.4 创建自定义集合 79
5.4.2 创建AddressList集合 80
5.4.1 实现CollectionBase类 80
5.5 小结 81
6.1.1 类的属性 83
6.1 对象与类 83
第6章 对象与类 83
6.1.2 面向对象设计与编程中的操作 85
6.1.4 对象 86
6.1.3 类 86
6.1.5 对象状态维护 87
6.2.1 继承基类 88
6.2 对象与类的深入讨论 88
6.2.2 多态性 90
6.3 小结 93
7.1.1 文件与流I/O 94
7.1 文件与流I/O 94
第7章 文件与流I/O以及对象持久性 94
7.1.2 使用流:FileStream、MemoryStream、StringReader和StringWriter 97
7.1.3 使用FileSystemWatcher 101
7.2.1 串行化对象 105
7.2 对象持久性 105
7.2.2 扩展标准串行化 110
7.3 小结 113
8.1 运用DOM 114
第8章 XML基础 114
8.1.1 创建XML文档 119
8.1.3 保存DOM 120
8.1.2 运用XML节点、元素和属性 120
8.2.2 使用XmlTextReader 121
8.2.1 什么是XmlReader 121
8.2 使用XmlReader类 121
8.2.5 使用XmlConvert 123
8.2.4 使用XmlNodeReader 123
8.2.3 使用XmlValidatingReader 123
8.3 XPath 124
8.3.1 语法学习 125
8.3.2 节点筛选 126
8.4 XPathDocument 127
8.4.1 XSLT 129
8.4.2 转换XML文档 130
8.5.1 使用基本的XML串行化 132
8.5 串行化XML样式 132
8.5.2 自定义XML串行化 134
8.6 小结 135
9.1.1 主要的线程属性和线程方法 137
9.1 线程基础 137
第9章 多线程编程 137
9.1.4 运行线程 139
9.1.3 创建线程 139
9.1.2 ThreadStart委托 139
9.1.5 终止线程 140
9.1.8 联接线程 142
9.1.7 通过“休眠”来暂停线程 142
9.1.6 挂起线程 142
9.2 同步 143
9.3.1 引发线程事件 144
9.3 使用lock关键字 144
9.3.2 使用Mutex类 146
9.3.3 使用Monitor类 147
9.3.5 无等待读取(Reader WriterLock) 151
9.3.4 变量保护(Interlocked递增/递减) 151
9.4.2 将工作项排入队列 154
9.4.1 WaitCallback委托 154
9.4 对非同步编程使用线程池 154
9.4.3 向线程传递数据 155
9.5 小结 156
10.1 委托的定义 157
第10章 事件与委托 157
10.1.1 委托的类型 161
10.1.2 委托的内部机制 163
10.1.4 事件 164
10.1.3 组合委托 164
10.2 小结 168
11.1.2 反射如何工作 170
11.1.1 反射 170
第11章 反射与代码属性 170
11.1 使用反射 170
11.1.3 在运行时查看类型信息 171
11.2.2 使用代码属性 175
11.2.1 代码属性 175
11.2 使用代码属性 175
11.2.3 创建自定义属性 176
11.2.4 查询自定义属性 178
11.3 小结 180
12.2 简介 181
12.1 程序集 181
第12章 程序集与AppDomain 181
12.3 程序集构造块 182
12.3.1 程序集清单 183
12.3.3 深入程序集——MSIL代码 184
12.3.2 元数据 184
12.4 创建程序集 185
12.3.4 程序集资源 185
12.5 在程序集中嵌入资源和内容 188
12.6 本地化与附属程序集 190
12.7 AppDomain 193
12.7.2 AppDomain编程 194
12.7.1 简介 194
12.8 组合使用程序集与AppDomain的实例 198
12.9 小结 204
13.1.1 COM Interop 205
13.1 使用.NET代码与COM交互 205
第13章 COM与Windows互操作性 205
13.1.3 .NET到COM的编组 206
13.1.2 运行时可调用包装程序 206
13.1.4 代码互操作性示例:.NET代码调用COM代码 207
13.2.2 用于COM Interop编程的.NET代码属性 210
13.2.1 COM可调用包装程序 210
13.2 COM到.NET 210
13.2.4 Interop编程示例:COM代码使用.NET组件这个组件 211
13.2.3 从COM将数据编组到.NET 211
13.3.1 主Interop程序集概述 213
13.3 主Interop程序集 213
13.2.5 何时使用Interop 213
13.3.3 创建并部署PIA 214
13.3.2 使用PIA 214
13.4.3 平台调用——数据编组 215
13.4.2 使用非托管DLL 215
13.4 平台调用(P/Invoke) 215
13.4.1 简介 215
13.4.4 平台调用示例——Win32 API 217
13.5 小结 218
13.4.5 何时使用平台调用 218
14.1.1 垃圾回收内部机制——generation(代) 219
14.1 垃圾回收 219
第14章 高性能编程 219
14.1.2 思考垃圾回收器的代码编写 220
14.1.3 非确定性终结与析构 221
14.2 CLR中内存与类的管理 222
14.2.1 装箱与取消装箱 223
14.2.2 集合与装箱 224
14.2.3 使用StringBuilder类 225
14.3.1 使用异常 226
14.3 高性能代码:最优方法 226
14.3.3 值类型与引用类型 227
14.3.2 大块API调用 227
14.3.6 for与foreach 228
14.3.5 锯齿数组与矩形数组 228
14.3.4 对集合使用AddRange 228
14.4 小结 230
14.3.7 利用异步I/O 230
15.1.1 Main方法 233
15.1 Windows Forms基础知识 233
第Ⅲ部分 Windows应用程序 233
第15章 Windows Forms 233
15.1.2 理解Forms Designer 234
15.2.1 利用Windows Application Wizard创建应用程序 236
15.2 Hello World 236
15.2.2 设置属性 238
15.2.3 编译并运行应用程序 239
15.2.4 响应按钮的单击 240
15.3 小结 243
16.1.1 执行控件操作 244
16.1 标准Windows Forms用户界面控件 244
第16章 Windows Forms用户界面控件 244
16.1.2 用控件来存储值和更改值 246
16.1.3 利用控件维护列表 249
16.2 用户控件 257
16.3 小结 258
17.1.1 使用继承的窗体 259
17.1 可视继承 259
第17章 创建优秀的Windows 259
Forms应用程序 259
17.1.2 使用WinForms可视继承 260
17.2.1 上下文相关的、自适应的用户界面 265
17.2 创建并使用动态上下文菜单 265
17.1.3 可视继承的最优方法 265
17.2.2 使用简单的动态上下文菜单 266
17.4.1 创建自定义ListBox 268
17.4 使用DrawMode属性 268
17.3 绘制自定义列表元素 268
17.4.2 创建自定义菜单项 270
17.5.1 简介 271
17.5 形状窗体 271
17.5.2 创建一个形状窗体示例 272
17.6 小结 273
18.1.1 在Visual Studio.NET中添加引用 274
18.1 添加Web引用 274
第18章 使用Web服务 274
18.2 动态URL支持 278
18.1.2 使用WSDL.EXE 278
18.2.2 在独立存储中保存URL 279
18.2.1 在app.config中存储URL 279
18.3 异步使用Web服务 282
18.2.3 使用UDDI实现动态URL 282
18.3.1 多线程服务使用示例 283
18.3.3 网络连接测试 284
18.3.2 Web服务客户端可靠性 284
18.4 小结 285
18.3.5 支持离线操作 285
18.3.4 处理Web服务错误 285
19.1.1 理解智能客户端 287
19.1 智能客户端 287
第19章 智能客户端 287
19.1.2 用集中服务器部署和更新智能客户端 288
19.1.3 在智能客户端后端支持中使用Web服务 291
19.2 小结 294
19.1.5 使用在线和离线功能 294
19.1.4 根据效率决定是在服务器端处理,还是在客户端处理 294
20.1.1 程序集部署 296
20.1 安装.NET应用程序 296
第20章 部署Windows应用程序 296
20.1.2 将程序集放到全局程序集缓存中 297
20.1.3 私有安装 301
20.2.1 从URL部署 302
20.2 Web安装 302
20.2.2 部署智能客户端应用程序 303
20.3 MSI/项目安装 305
创建一个安装项目 306
20.4 小结 310
21.1 Web Forms Designer 313
第21章 Web Forms和ASP.NET 313
第Ⅳ部分 Web应用程序 313
21.2 创建ASP.NET“Hello World”应用程序 314
21.3 基本事件处理 319
21.4 小结 323
22.1 服务器控件 324
第22章 Web UI控件 324
22.2 小结 335
23.1.1 视图状态 336
23.1 客户端状态管理 336
第23章 ASP.NET中的状态管理 336
23.1.2 使用隐藏表单字段 341
23.1.3 cookie 344
23.1.4 查询字符串 347
23.1.5 在窗体之间传送服务器控件值 350
23.2.1 应用程序状态 354
23.2 服务器端状态管理 354
23.2.2 会话状态 355
23.3 小结 356
24.1.1 介绍ASP.NET的缓存 358
24.1 缓存 358
第24章 缓存 358
24.1.2 OutputCache指令 359
24.1.3 使用HttpCachePolicy 361
24.1.4 使用Cache对象 363
24.2 小结 366
25.1 创建Web farm中的ASP.NET应用程序 368
第25章 高级ASP.NET 368
25.1.2 Web farm中的会话状态维护 369
25.1.1 Web farm中的ViewState 369
25.1.3 Web farm中的应用程序状态 371
25.1.5 Web farm的最佳习惯、建议和告诫 372
25.1.4 Web farm的配置和部署 372
25.2.1 使用本地化的资源 373
25.2 ASP.NET的本地化和全球化 373
25.2.2 显示本地化的内容 374
25.2.3 其他的本地化功能 376
25.3.2 创建自定义的HttpModule 378
25.3.1 了解ASP.NET应用程序事件 378
25.3 创建自定义的HttpModule 378
25.4 创建自定义的HttpHandler 380
25.5 小结 382
26.1.1 通过“Copy Project”部署 383
26.1 手工部署ASP.NET应用程序 383
第26章 部署ASP.NET应用程序 383
26.2 自动化部署 384
26.1.3 何时XCopy 384
26.1.2 XCopy部署 384
26.2.1 创建安装项目 385
26.3.1 Web farm考虑事项 389
26.3 高级ASP.NET部署 389
26.2.2 部署安装项目 389
26.3.2 防火墙、DMZ、路由器和安全约束 390
26.3.3 宿主环境考虑事项 391
26.4 小结 392
27.1.2 使用SqlConnection类 395
27.1.1 SQL Server数据提供程序 395
第Ⅴ部分 数据访问 395
第27章 使用.NET数据提供程序 395
27.1 SQL Server数据提供程序 395
27.1.3 使用SqlConnection的数据库连接字符串 396
27.1.4 SqlCommand类 397
27.1.6 SqlDataAdapter类 399
27.1.5 SqlDataReader类 399
27.2.3 使用OleDbCommand 401
27.2.2 使用OleDbConnection 401
27.2 处理OLEDB数据提供程序 401
27.2.1 OLEDB数据提供程序 401
27.2.5 使用OleDbDataAdapter 402
27.2.4 使用OleDbDataReader 402
27.3.4 mySQL.NET数据提供程序 403
27.3.3 .NET ODBC数据提供程序 403
27.3 其他数据提供程序 403
27.3.1 Oracle的.NET数据提供程序(ODP.NET) 403
27.3.2 Microsoft为Oracle提供的.NET数据提供程序 403
27.4.3 示例:将DataSet关联到动态数据源 404
27.4.2 将DataSet与DataAdapter关联 404
27.4 DataSet和DataAdapter绑定 404
27.4.1 DataSet 404
27.5 小结 406
28.1.1 何时创建数据提供程序 408
28.1 自定义数据提供程序 408
第28章 创建自定义的ADO.NET数据提供程序 408
28.1.3 数据提供程序情景示例 409
28.1.2 实现自定义数据提供程序的步骤 409
28.1.4 远程数据提供程序概述 410
28.2.3 RDPParameter类 411
28.2.2 IDataParameterCollection接口 411
28.2 实现IDataParameter和IDataParameterCollection 411
28.2.1 IDataParameter接口 411
28.2.4 RDPParameterCollection类 414
28.3.1 IDbConnection接口 416
28.3 实现自定义Connection 416
28.3.2 RDPConnection类 417
28.4.1 IDbCommand接口 419
28.4 实现自定义Command 419
28.4.2 RDPCommand类 420
28.5.2 RDPDataReader类 424
28.5.1 IDataReader接口 424
28.5 实现自定义DataReader 424
28.6.2 RDPDataAdapter类 429
28.6.1 IDbDataAdapter接口 429
28.6 实现自定义DataAdapter 429
28.7 小结 433
29.1.1 XSD 434
29.1 XML模式定义 434
第29章 类型化的DataSet和XSD 434
29.1.3 派生的数据类型 436
29.1.2 XSD中的基本数据类型 436
29.1.5 分组元素 437
29.1.4 复杂数据类型 437
29.1.7 XML模式刻面 438
29.1.6 注解XML模式 438
29.1.8 设计XML模式——XmlSchema类 439
29.2.1 使用XML模式定义表和列 442
29.2 使用模式构造DataSet 442
29.2.2 使用XML模式定义DataSet键和约束 443
29.3 类型化的DataSet 445
29.3.3 使用类型化的DataSet 448
29.3.2 使用XSD.EXE构造类型化的DataSet 448
29.3.1 在Visual Studio.NET中创建类型化的DataSet 448
29.3.4 注解类型化的DataSet 449
29.4 小结 451
30.1.2 简单数据绑定 452
30.1.1 Windows Forms数据绑定 452
第30章 Windows Forms数据绑定 452
30.1 数据绑定 452
30.1.3 复杂数据绑定 454
30.2.2 CurrencyManager类 455
30.2.1 BindingContext类 455
30.1.4 单向和双向数据绑定 455
30.2 数据绑定结构 455
30.3.1 简单绑定 458
30.3 数据绑定示例 458
30.2.3 PropertyManager类 458
30.3.3 DataGrid绑定 459
30.3.2 绑定到ComboBox 459
30.4.1 主/从窗体 461
30.4 高级数据绑定示例 461
30.4.2 层叠式主/从 463
30.5 小结 466
31.1.1 Web Forms数据绑定 467
31.1 数据绑定 467
第31章 Web Forms数据绑定 467
31.1.3 简单数据绑定 468
31.1.2 <%# %>绑定语法 468
31.2.2 DataBinder.Eval 470
31.2.1 Container.DataItem 470
31.1.4 复杂数据绑定 470
31.1.5 DataBind()方法 470
31.2 数据绑定结构 470
31.3 数据绑定示例 471
31.2.3 ItemDataBound事件 471
31.3.2 Repeater绑定 472
31.3.1 简单绑定 472
31.3.3 DataList绑定 475
31.4.1 主从窗体 477
31.4 高级绑定示例 477
31.3.4 DataGrid绑定 477
31.4.2 层叠式主从 481
31.5 小结 484
32.1.2 SOAP 489
32.1.1 定义Web服务 489
第Ⅵ部分 Web服务 489
第32章 Web服务介绍 489
32.1 Web服务 489
32.2.1 Hello World 491
32.2 创建Web服务 491
32.1.3 WSDL 491
32.2.2 复杂串行化 494
32.2.4 维护Web服务的状态 497
32.2.3 使用Web服务的事务 497
32.3.3 异步调用 498
32.3.2 同步调用 498
32.2.5 Web服务的合同优先编程 498
32.3 回顾Web服务的使用 498
32.3.1 为Web服务创建客户端代理 498
32.4 小结 499
33.1.2 WSE的发展 501
33.1.1 GXA 501
第33章 WSE 2.0 501
33.1 WSE 2.0 501
33.2.2 SoapSender和SoapReceiver 502
33.2.1 TCP承载的SOAP 502
33.2 TCP消息传送 502
33.2.3 SoapService类 505
33.2.4 SoapClient类 506
33.3.2 UsernameTokens 508
33.3.1 WSE安全性 508
33.3 安全性 508
33.3.4 签名消息 509
33.3.3 X.509认证 509
33.5 小结 510
33.4.2 通过WSE传输文件 510
33.4 使用WSE 2.0传递附件消息 510
33.4.1 DIME 510
第34章 代码访问安全 515
34.1 CAS 515
第Ⅶ部分 保障应用程序的安全 515
34.1.2 代码访问权限 516
34.1.1 使用代码访问安全权限 516
34.1.4 基于角色的安全权限 517
34.1.3 身份权限 517
34.2.2 策略管理工具 518
34.2.1 修改CAS策略 518
34.2 CAS管理 518
34.2.4 调整区域安全 519
34.2.3 提高程序集的信任度 519
34.2.5 评估程序集 520
34.2.6 创建部署包 521
34.3.2 使用声明性安全句法 522
34.3.1 使用强制性安全句法 522
34.3 编写识别CAS的代码 522
34.3.3 封闭不必要的客户端 523
34.4 小结 525
35.1.1 DESCryptoServiceProvider 526
35.1 密钥(对称)加密 526
第35章 敏感数据安全 526
35.1.3 RijndaelManaged 527
35.1.2 RC2CryptoServiceProvider 527
35.1.4 TripleDESCryptoService Provider 528
35.2.1 MACTripleDES 530
35.2 使用散列保护数据 530
35.2.2 SHA1Managed 531
35.2.3 MD5CryptoServiceProvider 532
35.3.1 DSACryptoServiceProvider 533
35.3 公钥加密和签名 533
35.4 Windows Data Protection API 535
35.3.2 RSACryptoServiceProvider 535
35.4.1 使用DPAPI 536
35.4.2 创建DPAPI包装器 537
35.4.3 使用DPAPI保护.NET中的数据 542
35.5 小结 543
36.1.1 用户验证 544
36.1 用户安全 544
第36章 ASP.NET Web应用程序的安全 544
36.1.3 实现IIdentity和IPrincipal 548
36.1.2 用户角色授权 548
36.2 ASP.NET应用程序中的数据安全 553
36.2.2 保护用户口令 554
36.2.1 保护连接字符串和Web.config数据 554
36.2.3 决定何时使用SSL 555
36.3 小结 556
36.2.4 使用ViewState加密的数据安全 556
37.1.2 何时授权和保护 557
37.1.1 授权定义 557
第37章 授权和知识产权 557
37.1 授权 557
37.2.1 许可提供者和许可管理员 558
37.2 实现自定义授权 558
37.1.3 授权和验证的类型 558
37.2.2 创建许可 559
37.2.3 创建许可提供者 560
37.2.4 建立授权控件 563
37.3 授权实现策略 566
37.2.5 授权Web控件和Windows Forms控件 566
37.4.1 通过隐藏授权算法保护知识产权 567
37.4 保护知识产权 567
37.3.1 决定授权部署方法 567
37.3.2 决定授权验证方法 567
37.3.3 决定许可购买方法 567
37.3.4 决定授权方法 567
37.5 小结 568
37.4.3 使用备用后端保护知识产权 568
37.4.2 通过混淆法保护知识产权 568
38.1.1 了解接口 573
38.1 接口编程 573
第Ⅷ部分 企业应用与相关的应用 573
第38章 接口编程 573
38.1.2 隐式声明接口 576
38.1.3 显式声明接口 580
38.1.4 映射接口 582
38.1.5 继承接口 584
38.2 小结 585
39.1.1 Remoting 586
39.1 Remoting体系结构 586
第39章 Remoting 586
39.1.2 应用程序域 587
39.1.3 上下文 588
39.1.4 选择信道 589
39.1.5 远程对象的生存与死亡 590
39.1.6 构建Remoting服务器应用程序 595
39.1.7 构建客户端 596
39.2 IIS和Remoting 597
39.3 小结 598
40.1.1 事务 599
40.1 COM+ 599
第40章 COM+企业服务 599
40.1.3 对象入池 600
40.1.2 COM+中的JIT激活 600
40.1.7 事件 601
40.1.6 排队的组件 601
40.1.4 构造字符串 601
40.1.5 基于角色的安全性 601
40.2.1 事务 602
40.2 构建COM+组件 602
40.2.2 构造字符串 604
40.2.4 对象入池 605
40.2.3 JIT激活示例 605
40.2.5 共享的属性 606
40.3 COM+中的安全性 607
40.3.2 基于角色的安全性 608
40.3.1 对象和安全性上下文 608
40.4.1 事件 610
40.4 高级COM+ 610
40.5 小结 612
40.4.2 排队的组件 612
41.1.1 企业模板介绍 613
41.1 企业模板 613
第41章 企业模板 613
41.1.2 静态和动态内容 614
41.2 策略文件 615
41.1.5 自定义向导 615
41.1.3 静态原型 615
41.1.4 子项目向导 615
41.3 示例教学 617
41.3.3 创建模板结构 618
41.3.2 布置模板 618
41.3.1 设置先决条件 618
41.3.5 建立模板 622
41.3.4 将策略分配给模板 622
41.3.6 建立用户可用的模板 624
41.3.7 测试模板 625
41.4 小结 627
42.1.1 设置调试的应用程序 631
42.1 Visual Studio.NET调试环境 631
第Ⅸ部分 调试和测试 631
第42章 调试应用程序 631
42.1.2 理解语法和错误消息 633
42.1.3 理解调试工具窗口 634
42.1.4 导航应用程序 637
42.1.5 设置并使用断点 638
42.2 使用Visual Studio.NET调试 639
43.1 调试和跟踪语句 647
第43章 监控应用程序 647
43.1.1 跟踪监听器 650
43.1.2 跟踪开关 654
43.1.3 自定义跟踪监听器 657
43.2 小结 658
44.1.1 检测应用程序介绍 659
44.1 检测应用程序 659
第44章 检测应用程序 659
44.1.3 Windows事件日志 660
44.1.2 检测方法 660
44.1.4 检查Debug和Trace类 662
44.1.5 Windows管理检测 664
44.2.3 EIF的元素 668
44.2.2 企业检测框架的需求 668
44.2 企业检测框架 668
44.2.1 EIF简介 668
44.2.4 请求跟踪 670
44.3 小结 671
44.2.5 配置EIF 671
45.1.1 泛性(Generics) 672
45.1 C#的前景 672
第45章 C#的前景 672
45.1.3 最终的可空类型 675
45.1.2 匿名方法 675
45.1.5 不完全类型 676
45.1.4 带有迭代器的列表管理 676
45.1.6 静态类 677
45.2 小结 678