目 录
第一篇 门
第1章 进入Microsoft .NET世界 2
1.1 Microsoft .NET的理念 2
1.1.1 Visual Studio .NET的历史和延承 3
1.1.2 初识 .NET Framework 4
1.2 .NET Framework的架构 5
1.2.1 什么是公共语言运行时(CLR) 5
1.2.2 微软中间语言——MSIL 6
1.2.3 .NET框架中的编程语言 7
1.2.4 多语言支持和语言互操作的基础——CTS和CLS 7
1.2.5 了解.NET类库 8
1.3 开发环境的安装 9
1.3.1 Visual Studio的安装 10
1.3.2 安装.NET Framework 3.0环境 11
1.3.3 关于Visual Studio 2007及Visual Studio 2008 14
1.4 开始我们的应用程序 15
1.4.1 你的第一个C#程序 15
1.4.2 Visual Studio 2005介绍 17
1.4.3 帮助文档的使用 23
1.5 小结 25
第2章 C#语言基础 26
2.1 学习数据类型 26
2.1.1 变量的概念 26
2.1.2 值类型 28
2.1.3 引用类型 32
2.2 运算符和表达式 33
2.2.1 算术运算符 33
2.2.2 关系运算符 35
2.2.3 逻辑运算符 36
2.2.4 赋值运算符 38
2.2.5 移位运算符 39
2.2.6 运算符的优先级 40
2.3 掌握语句 42
2.3.1 分支结构语句 43
2.3.2 循环语句 48
2.3.3 跳转语句 55
2.4 你必须了解的细节 58
2.4.1 数组 58
2.4.2 变量的作用域 61
2.4.3 类型转换 63
2.4.4 代码注释和#region指令 65
2.5 小结 66
第3章 C#中的面向对象 67
3.1 类的定义 68
3.1.1 什么叫字段 70
3.1.2 方法又是什么 71
3.2 类的使用——以鸭子为例 74
3.2.1 类成员的访问 76
3.2.2 类和对象的关系 77
3.3 类的数据成员的存放问题 78
3.3.1 类成员的存放 78
3.3.2 有点特别的静态数据成员 79
3.4 关于方法成员的更多研究 80
3.4.1 静态方法 80
3.4.2 方法重载及其意义所在 81
3.4.3 构造方法——初始化类中的数据成员 83
3.4.4 析构方法——销毁对象回收资源 84
3.5 属性和索引器的作用 86
3.5.1 属性 86
3.5.2 索引器 90
3.6 小结 94
第4章 面向对象的高级概念 95
4.1 继承 95
4.1.1 创建和使用继承 96
4.1.2 基对象引用子类实例——父母可以代表孩子做很多事情 100
4.1.3 base关键字 102
4.1.4 this关键字——用来调用本类成员 105
4.2 抽象类 106
4.2.1 何谓抽象和抽象类 107
4.2.2 实现抽象类 108
4.3 接口——多继承的换代产品 112
4.3.1 接口的定义和实现 112
4.3.2 显式接口实现——解决接口继承时的同名方法冲突 117
4.3.3 接口的使用 119
4.4 会飞的鸭子 120
4.4.1 定义鸭子类 120
4.4.2 使用继承 121
4.4.3 抽象类的作用 122
4.4.4 接口的好处 124
4.5 小结 126
第5章 高级类型 127
5.1 委托 127
5.1.1 委托的概念 127
5.1.2 委托的秘密 130
5.1.3 多播委托——引发连锁反应 130
5.2 事件 133
5.2.1 事件机制的原理 133
5.2.2 警察抓小偷 135
5.3 其他类型 137
5.3.1 枚举 137
5.3.2 结构——C语言的遗产 140
5.3.3 密封类——不能被继承的类 141
5.3.4 分部类——解决超长类代码的存放 142
5.3.5 匿名方法 143
5.3.6 可空类型 144
5.3.7 命名空间——区别同名类 145
5.3.8 数学类 146
5.3.9 日期类型 147
5.3.10 随机数类 148
5.3.11 字符串类 150
5.4 类型运算 155
5.4.1 类型转换 155
5.4.2 is运算符——检查某个对象是否与给定类型兼容 159
5.4.3 as运算符 160
5.4.4 溢出检查的启用和取消——checked和unchecked 160
5.4.5 out和ref 161
5.4.6 typeof运算符 161
5.5 小结 162
第6章 Windows窗体编程 163
6.1 第一个窗体程序 163
6.1.1 建立第一个窗体程序 164
6.1.2 窗体代码分析 166
6.1.3 窗体事件机制 168
6.2 基本窗体控件 169
6.2.1 按钮(Button)控件 170
6.2.2 多选框(CheckBox)控件 170
6.2.3 单选按钮(RadioButton)控件 171
6.2.4 标签(Label)控件 171
6.2.5 文本框(TextBox)控件 172
6.2.6 组合框(ComboBox)控件 174
6.2.7 一个小例子——IT技术调查 175
6.3 其他常用控件 176
6.3.1 滚动条(ScrollBar)和进度条(ProgressBar) 176
6.3.2 列表框(ListBox)控件 177
6.3.3 工具栏(ToolStrip)控件 178
6.3.4 状态栏(StatusStrip)控件 179
6.3.5 列表视图(ListView)控件 180
6.3.6 树视图(TreeView)控件 182
6.4 小结 185
第7章 窗体控件编程 186
7.1 高级控件 186
7.1.1 创建菜单 186
7.1.2 多文档应用程序 189
7.1.3 容器控件 191
7.1.4 对话框控件 192
7.2 GDI+的原理 193
7.2.1 画直线和曲线 195
7.2.2 绘制填充区域——使用刷子类 197
7.2.3 绘制图像——使用Image类 199
7.2.4 绘制文字——小例子:枚举系统支持的所有字体 200
7.3 窗体事件处理模型的基础——消息机制 202
7.3.1 Windows消息机制 203
7.3.2 重要的Control类 206
7.4 小结 209
第8章 处理异常 210
8.1 异常的产生——Bad Smell导致的问题 210
8.1.1 代码的错误有哪些 211
8.1.2 如何发现错误 213
8.2 使用调试器 214
8.2.1 断点管理窗口 215
8.2.2 自动窗口 216
8.2.3 监视窗口 217
8.2.4 即时窗口 217
8.2.5 使用调试器——一次程序调试实战 218
8.3 为程序买份保险 220
8.3.1 结构化异常处理 222
8.3.2 异常类和异常家族 223
8.3.3 多重catch语句 224
8.3.4 嵌套异常结构 226
8.4 自定义异常 228
8.4.1 使用自定义异常 228
8.4.2 如何正确使用异常 229
8.5 小结 230
第9章 操作文件和注册表 231
9.1 了解和操作注册表 231
9.1.1 了解注册表 232
9.1.2 操作注册表并编写一个简单的注册表编辑器 233
9.2 文件和文件夹操作 237
9.2.1 文件操作类及其使用 238
9.2.2 文件夹操作类及其使用 241
9.3 读写文件 243
9.3.1 流的概念——流就是“牛” 243
9.3.2 文件读写的方法 245
9.3.3 编码方式 245
9.3.4 文件流操作 247
9.3.4.1 一个Hello World级的文件流操作例子 249
9.3.4.2 创建一个简单的Windows记事本 250
9.3.5 读写文本数据及用流读写器重写文件流读写文件的例子 251
9.4 小结 254
第10章 案例——书籍收藏系统 255
10.1 项目背景 255
10.1.1 项目描述 255
10.1.2 软件的生命周期 255
10.1.2.1 了解软件生命周期的五个阶段 256
10.1.2.2 关于软件质量的几点做法 257
10.1.3 功能的组成 258
10.2 功能的实现 259
10.2.1 界面设计 259
10.2.2 代码实现 263
10.3 小结 271
第二篇 质
第11章 集合对象 273
11.1 数组 273
11.1.1 认识Array类 273
11.1.2 使用Array类 274
11.2 动态数组 276
11.2.1 认识ArrayList类 277
11.2.2 操作ArrayList 278
11.2.3 使用ArrayList缓存数据——一个简单的学员管理系统 280
11.3 哈希表 283
11.3.1 认识Hashtable类 284
11.3.2 Hashtable的操作 284
11.3.3 使用嵌套Hashtable——创建一个电话本系统 287
11.4 集合空间的接口 290
11.4.1 Icollection接口 291
11.4.2 Ienumerable接口及其使用 291
11.4.3 Ilist接口 293
11.4.4 自定义集合类 294
11.5 专用集合类 297
11.5.1 栈Stack 298
11.5.2 队列Queue 299
11.5.3 SortedList集合 300
11.5.4 更方便的操作字符串集合——StringCollection和StringDictionary集合 302
11.6 小结 303
第12章 泛型 304
12.1 为什么使用泛型 304
12.1.1 泛型思想的引出 304
12.1.2 C#泛型简介 306
12.2 泛型定义及其应用 307
12.2.1 泛型结构体 308
12.2.2 泛型类 309
12.2.3 泛型接口 311
12.2.4 泛型委托 312
12.2.5 泛型约束 314
12.3 泛型集合 315
12.3.1 泛型List集合 316
12.3.2 泛型哈希表——Dictionary 317
12.3.3 泛型队列 319
12.3.4 泛型栈 320
12.4 泛型的应用 321
12.4.1 使用泛型要注意的问题 321
12.4.2 一个泛型使用的示例 323
12.5 小结 326
第13章 多线程 327
13.1 进程与线程的概念 327
13.2 使用线程 329
13.2.1 认识Thread类并创建你的第一个带线程的程序 329
13.2.2 线程的方法和状态 332
13.2.3 线程的优先级及实用实例 334
13.3 线程的同步 336
13.3.1 锁定机制——使用Lock关键字 338
13.3.2 最常用的同步基元——监视器 340
13.3.3 事件 343
13.3.3.1 一个体现通知机制的例子 343
13.3.3.2 用三条线程去分别得到房子、车子和妻子 345
13.3.4 理解线程池——外加一个Word模拟程序 346
13.4 多线程应用 348
13.4.1 何时使用线程 349
13.4.2 集合中的线程安全 349
13.4.3 使用线程操作Windows窗体 352
13.4.3.1 采用计时器来设计一个闹钟程序 352
13.4.3.2 使用线程来实现闹钟功能 353
13.4.4 一个线程的例子——福利彩票双色球 356
13.5 小结 359
第14章 ADO.NET编程 361
14.1 数据库基础 361
14.1.1 SQL Server 2005的安装与使用 361
14.1.2 SQL简介 364
14.1.3 创建数据库 366
14.1.4 创建表 368
14.1.5 如何对数据进行增、删、改 370
14.1.6 如何查询数据 371
14.1.7 更快的执行速度——存储过程 374
14.1.8 数据库管理的基本操作 375
14.2 ADO.NET简介 376
14.2.1 ADO.NET的组成部件 377
14.2.2 ADO.NET的新特性 378
14.3 连接式访问数据库 379
14.3.1 如何连接数据库 380
14.3.2 如何操作数据库增、删、改、查 382
14.3.3 读取数据库结果集 386
14.3.4 事务操作的原理及其使用 387
14.4 调用存储过程 389
14.4.1 参数对象 390
14.4.2 调用无返回值的存储过程 392
14.4.3 调用带返回值的存储过程 394
14.5 数据集 396
14.5.1 认识数据集 397
14.5.2 建立数据表 397
14.5.3 数据集综合操作 401
14.6 断开式操作数据库 404
14.6.1 认识数据适配器 405
14.6.2 填充数据集 406
14.6.3 把数据集中的数据同步到数据库 408
14.7 小结 415
第15章 数据绑定 416
15.1 更强大的数据呈现——使用DataGridView控件 416
15.1.1 DataGridView的属性和方法 417
15.1.2 将DataGridView绑定到数据集 417
15.1.3 将DataGridView绑定到数据视图 420
15.1.4 将DataGridView绑定到数组 422
15.1.5 将DataGridView绑定到集合 423
15.1.6 定制DataGridView控件 423
15.2 数据集与数据绑定 427
15.2.1 提高代码的可读性——类型化数据集 427
15.2.2 BindingSource组件的优势 430
15.2.3 绑定DataGridView控件 431
15.3 绑定的应用 435
15.3.1 绑定到文本框 435
15.3.2 绑定到组合框 437
15.3.3 示例——一个简单的人事管理系统 438
15.4 小结 443
第16章 打印和报表 444
16.1 为你的程序添加打印功能 444
16.1.1 打印的原理与实现 444
16.1.2 认识打印控件——创建一个带打印功能的程序 447
16.1.3 打印DataGridView数据 449
16.2 水晶报表 450
16.2.1 快速建立水晶报表——创建一个家庭财务开支系统 451
16.2.2 报表查看器控件 457
16.2.3 报表文档 458
16.2.4 专业的报表设计器——水晶报表专家 460
16.2.5 加载和使用水晶报表 461
16.2.6 筛选报表数据 463
16.3 小结 465
第17章 组件技术 466
17.1 搭积木游戏 466
17.1.1 应用程序交互的发展史 466
17.1.2 组件的概念 468
17.2 认识程序集 468
17.2.1 弱名称和强名称程序集的区别 469
17.2.2 如何建立和使用程序集 470
17.3 反射技术 476
17.3.1 反射的概念 476
17.3.2 使用反射访问程序集 476
17.4 天下皆积木——平台调用 480
17.4.1 特性的概念 480
17.4.2 如何调用Windows API 481
17.4.3 如何调用COM组件 482
17.5 小结 485
第18章 软件开发方式 486
18.1 面向对象的分析与设计 486
18.1.1 OOAD的必要性 487
18.1.2 软件的组成“材料” 487
18.1.3 面向对象分析 489
18.1.4 面向对象设计 490
18.1.5 掌握VS .NET的类图设计器的使用 491
18.2 软件的体系结构 495
18.2.1 软件体系中的内容 495
18.2.2 组件 496
18.2.3 模式 496
18.2.3.1 设计模式——一个应用单例模式的例子 497
18.2.3.2 一个工厂模式的例子 498
18.2.4 软件的设计原则 500
18.3 .NET的三层架构 500
18.3.1 三层架构的构成 501
18.3.2 为什么要使用三层架构 503
18.3.3 一个应用三层架构的示例——家庭理财系统 503
18.3.3.1 建立数据库 503
18.3.3.2 小试三层架构 505
18.3.3.3 实现界面层 512
18.3.3.4 实现业务层 514
18.3.3.5 实现数据层 515
18.3.3.6 完成项目 518
18.4 小结 519
第19章 Windows工作流基础(WWF) 520
19.1 工作流的基础 520
19.1.1 你的第一个工作流程序 520
19.1.2 理解宿主的概念 525
19.1.3 理解活动(Activity)的概念 525
19.2 顺序工作流 527
19.2.1 顺序工作流控件 527
19.2.2 建立顺序工作流 529
19.3 状态工作流 532
19.3.1 状态工作流控件 532
19.3.2 建立状态机工作流——实现一个红绿灯系统 534
19.4 工作流的应用 538
19.4.1 向工作流传入数据 538
19.4.2 让工作流调用外部方法 540
19.4.3 使用事件控制工作流 543
19.5 实现更现实的工作流——订单处理流程 547
19.5.1 订单处理业务 547
19.5.2 建立订单状态工作流 548
19.5.3 应用工作流组件 552
19.5.4 工作流应用领域 558
19.6 小结 558
第20章 案例——黑木崖家庭财务系统 559
20.1 需求分析 559
20.1.1 项目名称及背景 559
20.1.2 需求规定 559
20.1.3 运行环境规定 561
20.2 系统设计 561
20.2.1 应用三层架构 561
20.2.2 数据库设计 562
20.2.3 界面设计 567
20.3 功能实现 569
20.3.1 账户管理模块 570
20.3.2 账薄管理模块 577
20.3.3 财务中心模块 588
20.3.4 系统中心模块 590
20.4 小结 592
第三篇 道
第21章 网络编程 594
21.1 网络编程基础 594
21.1.1 网络通信基础 594
21.1.2 System.Net命名空间概述 596
21.2 网络通讯编程 596
21.2.1 TCPClient和TCPListener类的使用——编写一个点对点聊天工具 597
21.2.2 使用UDPClient——无连接的发送数据方式 599
21.2.3 实现一个P2P聊天室 601
21.3 访问Internet 609
21.3.1 用WebClient访问Internet——实现下载和上传文件的例子 609
21.3.2 WebRequest 类和WebResponse类及其使用 611
21.3.3 使用浏览器控件——制作一个简单的浏览器 612
21.4 小结 615
第22章 XML 616
22.1 XML简介 616
22.1.1 XML的由来 616
22.1.2 XML的组成 617
22.1.3 什么时候使用XML 618
22.2 XML的语法 619
22.2.1 构成元素——剖析一个基本的XML文档 619
22.2.2 XML语法要点 620
22.2.3 CDATA语法 621
22.2.4 命名空间 622
22.2.5 什么是实体 624
22.2.6 架构(Schamer)——XML文档的验证 625
22.2.7 Schema语法 628
22.3 XML的读写操作 630
22.3.1 XML的流式读写——一个流式读写XML的例子 630
22.3.2 XML的随机读写——几个随机读写XML的例子 635
22.3.3 编程验证XML文档的有效性 641
22.3.4 数据集与XML 642
22.4 小结 644
第23章 ASP.NET基础 645
23.1 HTML简介 645
23.1.1 标签 646
23.1.2 表单 652
23.1.3 脚本 655
23.2 进入ASP.NET的世界 657
23.2.1 ASP.NET概述 657
23.2.2 配置ASP.NET的运行环境 658
23.2.3 你的第一个ASP.NET程序 659
23.3 简单控件 663
23.3.1 Label控件 664
23.3.2 TextBox控件 664
23.3.3 CheckBox控件 664
23.3.4 RadioButton控件 664
23.3.5 Button 665
23.3.6 Image控件 665
23.3.7 DropDownList控件 667
23.3.8 Calendar控件 669
23.3.9 AdRotator控件 669
23.4 小结 670
第24章 ASP.NET进阶 671
24.1 Web对象模型 671
24.1.1 Page对象及其使用 671
24.1.2 HttpResponse、Cookie、HttpRequest对象及其使用 674
24.1.3 Application、Session对象及其使用 678
24.1.4 Server对象和PostBackUrl属性及其使用 680
24.2 数据绑定 684
24.2.1 绑定控件属性 684
24.2.2 GridView控件及其使用 685
24.2.3 DataList控件及其使用 686
24.2.4 FormView控件及其使用 688
24.3 高级Web控件 690
24.3.1 登录控件 690
24.3.2 验证控件 691
24.3.3 导航控件 692
24.3.4 WebParts控件——创建一个简单的Web部件应用 693
24.3.5 Master Pages模板页 696
24.4 小结 699
第25章 Web服务 700
25.1 大道的到来——Web服务 700
25.1.1 创建你的第一个Web服务——一个简单的令人吃惊的计算服务 701
25.1.2 相关术语 704
25.2 创建Web服务 706
25.2.1 创建Web服务 706
25.2.2 发布Web服务 708
25.3 使用Web服务 712
25.3.1 在Windows项目中使用Web服务 713
25.3.2 在Web应用中使用Web服务 716
25.3.3 Web服务示例——创建一个股票查询系统 716
25.4 小结 721
第26章 Windows描述基础(WPF) 722
26.1 新时代的开发框架WPF 722
26.1.1 WPF简介 722
26.1.2 你的第一个WPF程序 723
26.1.3 XAML概述及剖析 726
26.2 WPF基本控件 728
26.2.1 按钮控件 729
26.2.2 文本及图片控件 731
26.2.3 视图控件 732
26.2.4 容器控件 736
26.2.5 数据绑定控件 739
26.2.5.1 绑定控件属性 739
26.2.5.2 绑定XML数据源 739
26.2.5.3 绑定对象 740
26.2.5.4 绑定数据集 742
26.3 图像与多媒体 745
26.3.1 创建2D图形 745
26.3.2 创建一个简单的3D图形 747
26.3.3 创建动画——一个渐变的长方形 748
26.3.4 音视频播放——创建一个媒体播放器 749
26.4 小结 751
第27章 WCF和AJAX 752
27.1 什么是WCF 752
27.1.1 WCF技术基础 752
27.1.2 创建一个简单的WCF服务 754
27.1.3 承载和使用WCF服务 757
27.2 AJAX技术 761
27.2.1 AJAX简介 761
27.2.2 JavaScript的语法 762
27.2.3 创建并解析一个AJAX应用 767
27.2.4 使用ASP.NET AJAX组件创建AJAX应用 768
27.3 小结 772
第28章 项目的安装与部署 773
28.1 项目部署 773
28.1.1 安装部署的类型 773
28.1.2 部署桌面应用程序——创建一个桌面程序安装包 774
28.1.3 部署Web应用程序 779
28.2 保护你的知识产权——给你的程序加密 780
28.2.1 混淆器简介 781
28.2.2 使用混淆器来加密程序 783
28.3 Windows服务 787
28.3.1 创建一个Windows服务 788
28.3.2 使用应用程序配置文件 791
28.3.3 使用Windows服务来部署程序 793
28.4 小结 794
第29章 单元测试和重构 795
29.1 单元测试 795
29.1.1 单元测试的概念 795
29.1.2 使用NUnit进行单元测试 796
29.2 重构(Refactoring) 801
29.2.1 为什么要重构 802
29.2.2 何时进行重构 803
29.2.3 重构的方法 803
29.3 使用Visual C#重构菜单 808
29.3.1 提取方法 809
29.3.2 重命名 810
29.3.3 封装字段 811
29.3.4 提取接口 812
29.3.5 将局部变量提升为参数 813
29.3.6 移出参数 814
29.3.7 重新排列参数 815
29.4 小结 816
第30章 案例——天天购物商城 817
30.1 需求分析 817
30.1.1 项目名称及背景 817
30.1.2 需求规定 817
30.1.3 运行环境规定 818
30.2 系统分析 818
30.2.1 应用三层架构 819
30.2.2 数据库设计 820
30.2.3 界面设计 823
30.3 功能实现 824
30.3.1 主页面实现 825
30.3.2 购物车实现 829
30.3.3 详细信息页面 830
30.3.4 结算中心模块 834
30.4 小结 837
附录A C#语言规范 838
命名规范 839
注释规范 844
行文规范 845
附表 851
附录B 快捷键参考 854
