第1篇 认识.NET 2.0与Visual Studio 2005
第1章 .NET与面向对象技术 2
1.1 .NET Framework简介 3
1.1.1 .NET Framework与Windows操作系统 3
1.1.2 .NET Framework与Visual Studio 5
1.1.3 .NET Framework的构成 7
1.2 .NET编程原理 10
1.2.1 搭建.NET软件运行和开发环境 10
1.2.2 手工开发第一个.NET程序 10
1.2.3 .NET程序的开发与运行过程 12
1.2.4 托管代码执行的过程 15
1.2.5 混合语言开发原理 15
1.3 面向对象技术简介 16
1.3.1 引例 16
1.3.2 结构化分析过程 17
1.3.3 面向对象分析过程 21
1.3.4 四种基本的面向对象特性 23
1.3.5 面向对象软件开发过程 26
第2章 Visual Studio 2005使用速成 28
2.1 安装与版本说明 28
2.2 熟悉Visual Studio 2005文档 29
2.2.1 出于系统学习目的使用Visual Studio 2005文档 30
2.2.2 在Visual Studio 2005文档中查找资料 32
2.2.3 使用互联网搜索信息 33
2.3 Visual Studio 2005项目类型 34
2.3.1 控制台应用程序 34
2.3.2 Windows应用程序 36
2.3.3 类库 36
2.4 解决方案资源管理器的使用 37
2.4.1 解决方案与项目 42
2.4.2 向项目中添加文件 44
2.4.3 类视图 44
2.5 代码编辑器的使用 45
2.5.1 在窗体设计器与代码编辑器中切换 46
2.5.2 使用代码折叠分块管理代码 46
2.5.3 快速定位代码 46
2.5.4 记住未完成的任务 49
2.5.5 给特定的事件编码 50
2.6 编译和运行程序 54
2.6.1 程序启动对象的确定 55
2.6.2 设计模式、运行模式与调试模式 56
2.6.3 Debug与Release编译模式 58
2.7 学会程序调试方法 59
2.7.1 软件中存在的三种错误类型 59
2.7.2 使用Visual Studio 2005调试程序 62
2.7.3 条件编译 66
2.8 .NET程序的部署 69
2.8.1 部署前的准备工作 70
2.8.2 了解.NET程序正确运行的条件 71
2.8.3 .NET程序部署方式 72
2.9 RAD编程方式简介 73
第2篇 面向对象理论及应用 78
第3章 类与对象 78
3.1 类与对象的概念 78
3.2 类的编写 83
3.2.1 字段 84
3.2.2 类的实例方法 85
3.2.3 方法的可变参数与可选参数 88
3.2.4 方法重载 90
3.2.5 运算符重载 92
3.2.6 类的静态成员 94
3.2.7 属性 100
3.2.8 类的可访问性 105
3.2.9 模块 108
3.3 深入理解对象内存模型 109
3.3.1 C#中的内置数据类型 110
3.3.2 使用值类型变量与引用类型变量 112
3.3.3 函数参数的传送方式 123
3.3.4 对象的创建与销毁 128
3.3.5 特殊的关键字this 132
3.3.6 使用字符串对象 136
3.3.7 深入了解CLR对象管理机制 142
3.4 基于.NET的组件化开发 147
3.4.1 类库项目 148
3.4.2 命名空间 151
3.4.3 程序集 153
3.4.4 Partial类 157
3.4.5 组件化开发理论基础 159
第4章 继承、接口与多态 165
4.1 继承 165
4.1.1 继承的概念 165
4.1.2 类型转换 168
4.1.3 方法重载、隐藏与虚方法调用 170
4.1.4 再谈值类型 178
4.1.5 继承条件下的对象创建与销毁 182
4.2 抽象类与接口 188
4.2.1 抽象类 189
4.2.2 接口 191
4.3 多态 199
4.3.1 继承多态 199
4.3.2 接口多态 203
4.4 类的可视化设计 205
4.4.1 Visual Studio 2005的可视化类设计器 205
4.4.2 类的设计方法小结 208
4.5 再探CLR对象模型 209
4.5.1 字段 209
4.5.2 方法 214
第5章 在编程中灵活应用对象 222
5.1 对象的集合与对象的组合 222
5.1.1 对象集合 222
5.1.2 组合对象 232
5.1.3 数据结构 238
5.2 多窗体编程原理 243
5.2.1 窗体对象与窗体类 243
5.2.2 多窗体间的相互访问 248
5.3 对象比较 254
5.4 对象复制 259
5.4.1 浅复制与深复制 259
5.4.2 编程实现“深复制” 261
5.4.3 对象复制小结 262
5.5 对象的保存与重建 263
5.5.1 对象序列化与流 263
5.5.2 在编程中应用序列化技术 266
第6章 异常处理 273
6.1 异常处理的概念 273
6.2 编程实现异常处理 275
6.2.1 try、catch和finally 275
6.2.2 CLR结构化异常处理原理 277
6.3 编写健壮的软件 281
6.3.1 编写高健壮性程序三原则 282
6.3.2 创建自己的异常处理系统 283
第7章 泛型编程 285
7.1 了解泛型 285
7.2 在开发中使用泛型 288
7.2.1 使用泛型集合List 288
7.2.2 编写泛型方法 295
7.2.3 定义和使用泛型类 296
7.3 泛型编程总结 298
第8章 经典面向对象编程实例分析 300
8.1 四则运算器程序概述 300
8.2 建立数学模型 302
8.2.1 四则运算表达式 302
8.2.2 四则运算表达式解析算法分析 302
8.2.3 算法的面向对象设计 304
8.3 软件体系结构设计方案 312
8.3.1 确定软件处理流程 312
8.3.2 软件可扩展性 313
8.3.3 设计用户界面 314
8.4 软件开发过程 317
8.4.1 开发次序的确定 317
8.4.2 迭代的软件开发过程 318
8.4.3 小结 319
第3篇 使用Visual Studio 2005软件工程特性提升开发效率 322
第9章 写出高质量的代码 322
9.1 高质量设计与代码的产生 322
9.2 典型有缺陷程序代码实例分析 326
9.3 Visual Studio 2005的代码自动化开发特性 330
9.3.1 使用Intellisense 330
9.3.2 插入代码段 334
9.3.3 定位类或方法的定义 335
9.3.4 查找标识符的所有引用 335
9.3.5 代码重构 335
9.4 静态代码分析 341
9.4.1 在Visual Studio 2005中进行静态代码分析 341
9.4.2 利用代码分析特性学习编写优质代码 342
第10章 程序性能分析 345
10.1 程序为何运行得如此之慢 345
10.2 使用程序性能分析器 346
10.2.1 读懂示例程序代码 346
10.2.2 对示例程序进行性能分析 348
10.2.3 优化代码 354
第11章 单元测试 362
11.1 软件测试概论 362
11.1.1 软件测试的含义与必要性 362
11.1.2 怎样进行软件测试 363
11.1.3 面向对象软件的测试 364
11.2 使用Visual Studio 2005进行单元测试 365
11.2.1 准备被测试的类 365
11.2.2 自动创建单元测试代码框架 366
11.2.3 运行测试项目并修正代码错误 370
11.2.4 测试类的私有方法 371
11.2.5 了解测试的代码覆盖率 375
11.3 在软件开发中应用单元测试 376
11.3.1 从数据文件中提取测试用例 378
11.3.2 使用数据库存取测试用例 380
第4篇 基于.NET Framework 2.0开发 384
第12章 My命名空间 384
12.1 My概述 385
12.2 在编程中使用My 386
12.2.1 显示计算机信息 386
12.2.2 使用资源 387
12.2.3 访问程序配置参数信息 392
12.3 Visual Basic 2005应用程序模型 395
12.3.1 窗体的按名访问 395
12.3.2 Windows应用程序框架 396
12.3.3 在启动窗体上显示系统初始化信息 401
第13章 委托、事件驱动与异步调用 408
13.1 委托 408
13.1.1 理解委托的概念 408
13.1.2 委托的组合与分解 410
13.1.3 委托技术内幕 412
13.1.4 委托调用链 415
13.1.5 在编程中使用委托 418
13.2 事件驱动 425
13.2.1 .NET Framework的事件处理机制 425
13.2.2 事件应用实例 434
13.2.3 用事件驱动模式开发图书借阅系统 444
13.3 异步编程 451
13.3.1 程序的同步执行和异步执行 451
13.3.2 异步编程模式揭秘 454
13.3.3 使用轮询等待异步调用完成 456
13.3.4 异步回调 457
13.3.5 异步调用中的异常与同步 459
13.3.6 异步编程小结 462
第14章 进程与线程 463
14.1 进程与线程的基础知识 463
14.1.1 进程 463
14.1.2 线程 466
14.1.3 CLR如何管理进程与线程 467
14.2 进程的启动与终止 475
14.2.1 进程启动 475
14.2.2 中止一个进程 483
14.3 进程通信 484
14.3.1 使用剪贴板传送对象 484
14.3.2 使用FileSystemWatcher实现进程同步 491
14.3.3 通过COM接口控制进程 496
14.4 多线程编程基础 501
14.4.1 什么是多线程 502
14.4.2 线程的创建、启动和停止 504
14.5 存取线程数据 513
14.5.1 向线程函数传送信息 513
14.5.2 多线程回调 518
14.6 线程同步 520
14.6.1 操作系统如何调度线程 520
14.6.2 死锁与数据存取错误 521
14.6.3 使用监视器Monitor 527
14.6.4 使用互斥同步对象Mutex 532
14.6.5 使用信号量对象Semaphore 537
14.6.6 使用线程同步事件类EventWaitHandle 541
14.6.7 使用线程池 544
14.6.8 线程同步方法小结 547
14.7 多线程中的可视化控件 548
14.7.1 多线程访问可视化控件的基本方法 548
14.7.2 编写线程安全的控件 551
14.7.3 可视化控件间的线程同步 554
14.7.4 多线程启动屏幕的设计 560
14.7.5 使用BackgroundWorker组件 568
第15章 反射技术及其应用 574
15.1 反射基础 575
15.1.1 什么是反射 575
15.1.2 .NET可执行应用程序的结构 575
15.2 数据类型的奥秘——Type类 578
15.2.1 创建Type对象 579
15.2.2 判断对象类型 581
15.2.3 查询成员信息 581
15.3 动态对象创建与方法调用 584
15.3.1 动态对象创建 585
15.3.2 动态方法调用 593
15.4 反射技术的应用实例 595
15.4.1 嵌入式DLL的动态执行 595
15.4.2 软插件系统的开发 598
附录A C# 2.0与Visual Basic 2005 609
附录B MSIL基础教程 622
附录C Visual Studio Team System:设计和运行测试的概述 632
本书缩略语 635
参考文献 636
后记 637