PART I 基础语法篇 7
第1章 NET概述 7
1-1软件开发结构的演进 7
1-2桌上型单机应用程序 8
1-3主从结构应用程序 9
1-4分布式应用程序结构 10
1-4-1Windows DNA(Windows Distributed InterNet Architecture) 10
1-4-2Windows DNA 2000 11
1-5下一代的互联网平台:Microsoft.NET 12
1-5-1 .NET Framework 13
1-5-2公共语言执行环境 14
1-5-3类函数库 16
1-5-4 .NET程序语言 17
第2章 C#概论 20
2-1 C#应用程序的结构 20
2-1-1分析C#应用程序结构 21
2-1-2 Using前置命令与System名称空间 22
2-2标准的输入/输出 23
2-2-1输出字符串到Console 24
2-2-3读取数据 25
2-2-2格式化输出字符串 25
2-3程序代码注释 26
生成XML文件 27
2-4编译C#应用程序 30
编译器选项 30
第3章 实值类型变量 32
3-1公共类型系统 32
3-2实值类型与参考类型 32
实值类型与参考类型的差异 33
3-3找寻基础类 34
3-4-1简单类型 35
3-4实值类型 35
3-4-2命名原则 39
3-4-3定义变量 40
3-4-4指定变量的值 40
3-5常用的操作数 40
使用递增与递减操作数 41
3-6操作数优先顺序 44
3-7使用列举类型 45
3-7-1 enum类型常用的方法 49
3-7-2使用enum类型常犯的错误 51
3-8使用struct类型 52
3-9-1隐含式转换 54
3-9数据类型转换 54
3-9-2明确式转换 55
第4章 语句与例外处理 60
4-1程序区块 60
4-2语句类型 61
4-2-1 if语句 61
4-2-2 串联if(cascading if) 62
4-2-3 switch语句 63
4-2-4在switch中使用goto 66
4-3-1 while语句 67
4-3重复执行的语句 67
4-3-2 do语句 69
4-3-3 for语句 70
4-3-4 foreach语句 71
4-4跳转语句 72
4-4-1 goto语句 72
4-4-2 break与continue语句 73
4-5例外错误 74
4-5-1生成例外错误 76
4-5-2检查数值溢出 77
定义方法的语法 82
5-1定义方法 82
第5章 方法与参数 82
5-2调用其他类的方法 84
使用return跳出程序区段 85
5-3声明局域变量 85
5-4共用变量 86
变量范围冲突 88
5-5使用返回值 88
非void的方法必须有返回值 89
5-6声明与使用参数 89
声明参数的语法 89
5-7参数传递机制 90
5-7-1使用传值参数 91
5-7-2使用传出参数 93
5-7-3使用传参考参数 95
5-8使用传参考参数常见的错误 97
5-9声明不定长度的参数 98
使用foreach语句 100
5-10使用递回方法 100
5-11覆写方法 101
第6章 数组 106
6-1什么是数组? 106
6-3数组维数 107
6-2声明数组 107
6-4存取数组元素 108
6-5使用Length属性检查数组上下限 111
6-6数组与集合的比较 111
6-7声明时初始化数组 112
6-7-1使用简短的表示法 113
6-7-2初始化多维的数组 115
6-8执行时期指定数组的大小 115
6-9 Jagged Array 117
6-10复制数组变量 119
6-11-1数组常用的属性 122
6-11数组的应用 122
6-11-2数组常用的方法 123
6-11-3由方法返回一个数组 126
6-11-4把数组当参数传递 128
6-12命令提示符参数 130
第7章 面向对象程序设计 134
7-1面向对象的缘由 134
7-1-1增加程序代码重复使用 134
7-1-2原始程序代码共用阶段 134
7-2类 135
7-3名称空间 135
7-4降低维护的负担 136
7-5数据封装 137
7-6继承 137
7-7多态 138
7-8抽象化 138
使用接口 138
第8章 类、名称空间 142
8-1类与对象 142
8-1-1类的成员 142
8-1-2对象 142
8-1-3定义类的语法 143
8-2类与结构的比较 146
结构适用于“轻量型”的对象 147
8-3数据封装 147
8-4数据与方法的存取控制 148
8-4-1使用成员访问修饰符 148
8-4-2良好的数据隐藏方式设计 149
8-4-3数据封装的目的 150
8-5使用静态成员 151
8-5-1声明及初始化静态数据 151
8-5-2使用静态方法 152
8-6-1 再探Hello World 153
8-5-3静态成员使用准则 153
8-6 C#与面向对象 153
8-6-2以static定义Main 154
8-7定义类与建立实体 154
this操作数 156
8-8使用访问修饰符 157
8-9建立嵌套类 163
8-10名称空间 167
8-10-1声明名称空间 168
8-10-2名称空间的领域 169
8-10-3使用名称空间的好处 171
8-10-4名称空间存取控制 171
8-11完全区别名称 172
8-12使用using前置命令 174
建立阶层式类结构 175
8-13使用别名 177
8-14使用命名空间的准则 179
9-2-3实值类型与参考类型差异 182
9-2-1实值类型 182
9-2-2参考类型 182
9-1使用参考类型变量 182
第9章 参考类型变量 182
9-2参考类型与实值型 182
9-3声明与释放参考类型变量 183
9-3-1声明参考类型变量 183
9-3-2释放参考类型变量 186
9-4比较参考类型变量与实值类型变量 187
9-5多个参考类型变量参考到同一个对象 189
9-6以参考变量当做方法的参数 192
9-7-1 Exception类 194
9-7-2 String类 194
9-7常用的参考类型 194
9-7-3比较字符串的方法与操作数 198
9-7-4 C#对象阶层结构 201
9-8.NET Framework常用的类 202
9-8-1 System.IO 202
9-8-2 System.XML 204
9-9数据类型转换 205
9-9-1隐含式转换 205
9-9-2明确式转换 205
9-10 Parent与Child之间的转换 206
9-10-1转换成Parent Class的参考 206
9-10-2转换成Child Class的参考 207
9-11使用is操作数 211
9-12使用as操作数 212
9-13 object类型转换守则 213
9-14 Boxing与Unboxing 214
9-14-1 Boxing 214
9-14-2 UnBoxing 215
第10章 对象的生与死 218
10-1了解构造器 218
10-1-1使用New取得内存 218
10-1-2 Managed Heap内存配置 218
10-1-3初始化对象 219
10-2-2编辑器自动生成的构造器 220
10-2默认构造器 220
10-2-1默认构造器的特性 220
10-2-3定义默认构造器 221
10-2-4定义构造器原则 224
10-3覆写构造器 224
10-4覆写构造器潜在的问题 226
10-4-1解决重复初始化程序代码的问题 226
10-4-2使用constructor-initializer 227
10-5初始化只读数据 229
10-6在构造器中使用out与ref 230
10-7 struct构造器 232
10-7-1 struct构造器的限制 233
10-8 static构造器 235
10-8-1使用static构造器初始化静态成员 236
10-8-2 static构造器的限制 237
10-9对象与内存 238
10-9-1对象的生命周期 238
10-9-2局域变量的生命周期 238
C#借由回收站回收资源 239
10-11使用Finalize方法 239
10-10谁来“摧毁”对象? 239
10-9-3对象的生命周期 239
Finalize对效率的影响 240
10-12编写析构器 240
使用析构器的考虑 244
10-13实现IDisposable接口 244
第11章 继承、多态与接口 250
11-1扩充基础类的功能 250
11-1-1继承的语法 250
11-1-2简单的UML描述 252
11-2扩充类的继承 255
11-2-1使用访问修饰符控制存取权限 255
11-2-2 protected成员的继承 256
11-3调用基础类的构造器 257
声明构造器 257
11-4改写基础类的方法 261
11-4-1定义虚拟方法 261
11-4-2虚拟方法与改写方法的守则 263
11-5隐藏基础类方法 264
11-6使用sealed类与sealed方法 266
11-7版本控制 268
11-8使用接口 276
接口的特点 277
11-9以明确的方式实现接口 281
11-10抽象类 284
11-10-1抽象方法 286
11-10-2不实现接口的抽象类 287
11-11抽象类与接口 290
11-12抽象方法与版本控制 290
第12章 属性与索引 296
12-1组件定义 296
12-2属性 296
12-2-1为什么要用属性? 296
12-2-2使用属性的好处 298
12-4使用存取元 299
12-3属性的种类 299
12-4-2使用set存取元 300
12-4-1使用get存取元 300
12-4-3使用get、set存取元 301
12-5编译器运作的情形 304
12-6属性与类数据成员的比较 306
12-6-1属性是逻辑上的类数据成员 306
12-6-2属性和数据成员的相似性 307
12-6-3属性和数据成员的不同点 308
12-7存取属性与类数据成员的比较 308
12-8-1属性和方法之间的相似性 309
12-8属性与方法的比较 309
12-8-2属性和方法之间的不同点 310
12-9索引的使用 311
12-9-1为什么要使用索引? 311
12-9-2定义索引 311
12-10索引和数组的比较 318
12-11覆写Indexer 319
12-12 Indexer与属性的比较 322
12-12-1 Indexer与属性的相似性 322
12-13 Indexer设计准则 323
12-12-2 Indexer与属性的不同点 323
第13章 操作数、Delegate事件 327
13-1覆写操作数 327
13-1-1覆写操作数的语法 327
13-1-2覆写相同的操作数多次 332
13-1-3 Conversion操作数 335
13-2建立并使用delegate类型 339
建立delegate类型 339
13-3事件 344
13-3-2在事件发行者中触发事件 347
13-3-1在事件发行者中定义一个事件 347
13-3-3在事件订阅者中定义事件处理常式 348
13-3-4向事件发行者订阅一个事件 348
13-4链接、删除事件设计准则 349
13-5 .NET Framework事件设计准则 351
13-6传递事件的参数 352
13-6-1 Sender对象与事件参数 352
13-6-2 定义delegate函数样板 355
13-6-3 EventArgs类的设计 355
13-6-4 事件处理常式的编写 356
13-6-5触发事件 356
14-1何谓Attribute? 360
第14章 Attribute与Reflection 360
14-2使用Attribute 361
Global Attribute 362
14-3自定义Attribute类 363
14-3-1 Attribute适用的元素 365
14-3-2设计Attribute类 366
14-3-3使用Attribute 366
14-3-4 Attribute编译的过程 368
14-3-5使用positional参数与named参数 368
14-3-6取得Attribute的值 369
14-4-2 Metadata 371
14-4 Reflection 371
14-4-1 Reflection设计理念 371
PART Ⅱ实战演练篇 382
第15章 编写数据库应用程序 382
15-1建立用户界面 382
15-2编写公用函数 390
15-3读取数据库数据,以及建立DataSet 392
15-4自定义dataGrid展示样式 403
15-5添加、删除、修改数据 405
15-6增加核对程序运作的程序代码 407
16-1建立Master/Detail关系的Dataset 414
第16章 编写Master/Detail数据库应用程序 414
16-2自定义dataGrid展示样式 417
16-3设计显示明细数据的表单 419
16-4使用BindingContext浏览数据 427
第17章 设计Windows From应用程序 432
17-1设计MDI应用程序 432
17-1-1使用StatusBar与Timer控件 433
17-1-2设计选单 436
17-1-3编写选单程序代码 441
17-2设计GDI+应用程序 443
17-2-1绘制统计图表 445
17-2-2使用FontDialog设置字体 450
17-2-3设置打印格式 450
17-2-4打印预览与打印报表 452
17-2-5使用PrintDialge选择打印机 458
17-2-6保存图形文件 459
第18章 使用COM+服务 464
18-1编写.NET组件 464
18-2编写转帐类 473
18-3建立KeyFile与Strong Name 477
18-4建立客户端的接口 478
18-5测试COM+应用程序 483
第19章 编写一个监控文件事务的Windows Service 488
19-1使用Windows Service模板 488
19-2使用EventLog与File System Watcher控件 489
19-3使用Installer类 491
19-4安装Windows Service 492
19-5启动服务与暂停服务 493
第20章 编写文件管理器 497
20-1建立UCOM File Manger用户界面 497
20-2编写初始化应用程序的程序代码 501
20-3编写事件程序 506
20-4打开文本文件 509
第21章 编写提供数据的Web Service 517
21-1建立Web Service 517
21-2编写使用Web Service的Windows Forms客户端 524
第22章 编写ASP.NET网页 531
22-1建立ASP.NET项目 531
22-2设计分页 537
22-3增加编辑数据的按钮 538
22-4编写修改、取消、保存按钮事件处理常式 540
22-5编写添加功能 542
22-6编写删除功能 544