PART 01工程实战 2
Chapter 01工程开始(ProjeCt KiCkoff) 2
1.1一个工作上的小问题 2
1.2问题的快速分析 2
1.3关键技术调研 3
1.3.1查找已存在的方案 3
1.3.2动手写第一个程序(第一个原型) 4
1.3.3进一步研究的成果(第二个原型) 8
1.3.4代码整理 14
1.4本章总结 21
Chapter 02需求分析和工程计划 23
2.1头 脑风暴法(Brainstorming) 24
2.2把功能归类 26
2.3关键路径法(Critical Path Method) 28
2.4本章总结 35
Chapter 03.粮草先行 37
3.1命名规范(Naming Notations) 37
3.2编码约定(Coding Conventions) 41
3.3版本控制(Revision Control) 47
3.4本章总结 50
Chapter 04快速原型 51
4.1计划变更及分析 51
4.2实现搜索局域网内机器的功能 52
4.3单元测试与调试基础 57
4.3.1使用MbUnit 58
4.3.2使用NUnit 65
4.3.3组合参数测试 66
4.4功能整合 67
4.4.1设计简单的用户界面 67
4.4.2整合搜寻局域网内机器的功能 71
4.4.3整合发消息功能 79
4.5本章总结 89
Chapter 05重构之上:多线程 90
5.1 NET Framework的多线程编程 90
5.2使用子线程来搜索lP地址上 91
5.3依据CPU个数创建多线程 99
5.4使用线程池(Thread Pool) 115
5.5使用异步编程模型(APM) 124
5.6使用并行扩展(Parallel Extensions) 131
5.7优化算法 140
5.8本章总结 156
Chapter 06重构之下:设计 158
6.1程序设计简述 158
6.2Object-oriented思想 158
6.2.1封装(Encapsulation) 159
6.2.2继承(lnheritance) 160
6.2.3多态(Polymorphism) 161
6.3O-O设计的原则 164
6.3.1 Open-closed Principle(OCP) 164
6.3.2 Liskov Substitution Principle(LSP) 168
6.3.3 Dependency lnversion Principle(DlP) 169
6.3.4 lnterface Segregation Principle (lSP) 169
6.3.5 Single-Responsibility Principle (SRP) 170
6.3.6 Composition/Aggregation Principle (CARP) 171
6.3.7 Law of Demeter (LoD ) 171
6.3.8 lnversion of Control (loC) 171
6.4设计模式基础 174
6.4.1Designing from Context(依据应用设计) 174
6.4.2动机A(工厂方法模式) 176
6.4.3动机B(抽象工厂模式) 184
6.4.4动机C(生成器) 193
6.4.5动机D(单件) 201
6.4.6动机E(反射对单件的扩展) 205
6.4.7动机F(配置对工厂的扩展) 211
6.4.8动机G(lDisposable) 229
6.4.9动机H(泛型扩展) 245
6.5本章总结 246
Chapter 07 NET的诊断(DiagnostiCs) 248
7.1简要介绍 248
7.2Debugger类 248
7.3Debug类 249
7.4Trace类 252
7.5定制化诊断信息 254
7.5.1 TraceSource类 254
7.5.2配置监听器(Trace Listeners) 256
7.6用Trace还是TraceSource 258
7.7设计更灵活的监听机制 260
7.7.1 OutputDebugString的运行机制 260
7.7.2程序实现 263
7.8本章总结 282
PART 02 NET Framework基础 284
Chapter 08 C#语言基础 284
8.1字符串操作(String Operation) 284
8.1.1String 284
8.1.2StringBuilder 287
8.1.3字符串操作的效率 288
8.1.4正则表达式(Regular Expression) 289
8.2 C#的数据类型 293
8.2.1值类型(ValueType) 293
8.2.2引用类型(ReferenceType) 294
8.2.3类型的赋值与参数传递 294
8.2.4装箱,拆箱(Boxing/Unboxing) 297
8.2.5可为空类型(Nullable Types) 299
8.2.6匿名类型(Anonymous Types) 299
8.3自定义类型 301
8.3.1命名空间(namespace) 301
8.3.2结构(struct) 302
8.3.3接口(interface) 302
8.3.4类(class) 302
8.3.5枚举(enum) 312
8.3.6自定义扩展方法 313
8.4集合(Collections) 316
8.4.1System.Array 316
8.4.2System.Collections 316
8.4.3System.Collections.Generic 318
8.4.4容器使用的算法 319
8.4.5多核线程中的集合 320
8.5文件l/O与流 320
8.5.1文件及目录操作 320
8.5.2文件读写 321
8.5.3异步文件读写 324
8.5.4MemoryMappedFiles 324
8.5.5文件压缩 325
8.5.6Environment 332
8.6预处理器指令 332
8.6.1分隔代码段落 332
8.6.2条件编译指令 332
8.6.3开/关编译信息 333
8.6.4 Conditional与#if/#end比较 334
Chapter 09 NET Framework的特性 335
9.1 C#对模板的支持 335
9.1.1模板类型和模板方法 335
9.1.2模板的优势 336
9.1.3C#模板的约束 337
9.1.4C#模板的类型转换 339
9.2平台调用服务 344
9.2.1调用非托管的DLL函数 344
9.2.2托管与非托管的数据类型映射 345
9.2.3映射非托管的结构(struct) 346
9.2.4MarshalAs辅助类 349
9.2.5Platform lnvoke的错误处理 349
9.2.6(U)lntPtr和SafeHandle 349
9.2.7CER(执行区域) 350
9.2.8小结 351
9.3 Object的生命周期 352
9.3.1垃圾回收器(Garbage Collector) 352
9.3.2构造器(Constructor) 353
9.3.3析构器(Destructor) 355
9.3.4影响和控制GC 356
9.3.5GC的性能 357
9.3.6优化Object的使用 358
9.4应用程序域 360
9.4.1创建应用程序域 360
9.4.2创建沙箱(SandBox)程序域 362
9.5特性(Attribute) 368
9.5.1特性的简化符号 368
9.5.2定制自己的特性 369
9.6反射(Reflection) 370
9.6.1加载托管程序集 370
9.6.2实例化Object和访问类成员(私有优化) 375
9.6.3Reflection.Emit 379
9.6.4序列化 379
9.7委托和事件 382
9.7.1委托(delegate)的使用 382
9.7.2匿名方法(Anonymous Method)和Lambda表达式 385
9.7.3事件的使用 386
9.7.4委托的协变与反变 386
9.8 XML 387
9.8.1XMLDOM 387
9.8.2用XPath查询 388
9.8.3使用LlNQtoXML 389
9.8.4XML序列化(XMLSerialization) 416
9.9动态语言支持(DLR) 422
9.9.1用dynamic代替var 423
9.9.2dynamic的原理 423
9.9.3自定义dynamic的派发过程 426
9.10 WinForm与WPF的消息 441
9.10.1WinForm的消息机制 442
9.10.2WPF的消息机制” 444
参考资源 455
参考书目(排名不分先后) 455
网络资源 456