《C# NET技术内幕》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美)Kevin Hoffman,(美)Lonny Kruger著;董梁,高猛译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302124922
  • 页数:678 页
图书介绍:本书使用基本C#语法并理解托管代码的核心概念,创建高效的、数据驱动的、企业级的Web应用程序,学习数据保护的输入和输出,创建和使用Web服务。

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