第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.26运算符的优先级 40
2.3掌握语句 42
2.3.1分支结构语句 43
2.3.2循环语句 48
2.3.3跳转语句 55
2.4你必须了解的细节 58
2.4.1数组 58
2.42变量的作用域 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.11认识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.1Icollection接口 291
11.4.2Ienumerable接口及其使用 291
11.4.3Ilist接口 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.33泛型队列 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.41参数对象 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.31反射的概念 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
192.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使用UDPClienteseses无连接的发送数据方式 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.1XML简介 616
22.1.1 XML的由来 616
22.1.2 XML的组成 617
22.1.3什么时候使用XML 618
22.2XML的语法 619
22.2.1构成元素——剖析一个基本的XML文档 619
22.22 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.31登录控件 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.2WPF基本控件 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使用VisualC#重构菜单 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