第1篇 基础语法篇 3
第1章 .NET概述 3
1-1 软件开发架构的演进 4
1-1-1 桌面型单机(1-Tier)应用程序 5
1-1-2 主从架构(Client/Server,2-Tier)应用程序 6
1-1-3 分布式(N-Tier)应用程序架构 7
1-1-4 Windows DNA 7
1-1-5 Windows DNA 2000 8
1-2 Microsoft.NET——下一代的因特网平台 8
1-2-1 .NET Framework 9
1-2-2 通用语言运行环境 10
1-2-3 类库 11
1-2-4 .NET程序语言 12
第2章 C#概论 13
2-1 C#应用程序的结构 14
2-1-1 分析C#应用程序结构 15
2-1-2 using前缀指令与System命名空间 16
2-2 标准的输入/输出 17
2-2-1 输出字符串到Console 17
2-2-3 读取数据 18
2-2-2 格式化输出字符串 18
2-3 代码注释 19
2-4 编译C#应用程序 22
总结 22
第3章 值类型变量 23
3-1 通用类型系统(Common Type System) 24
3-2 值类型与引用类型 24
3-3 查找基类 25
3-4 值类型 26
3-4-1 简单类型 27
3-4-2 命名原则 29
3-4-3 声明变量 30
3-4-4 赋值变量 30
3-5 常用的运算符 31
3-6 运算符优先级 34
3-7 使用枚举类型 35
3-7-1 enum类型常用的方法 37
3-7-2 使用enum类型常犯的错误 39
3-8 使用struct类型 39
3-9-1 隐含式转换 41
3-9 数据类型转换 41
3-9-2 明确式转换 42
总结 43
第4章 语句与异常处理 45
4-1 程序块 46
4-2 语句类型 47
4-2-1 if语句 47
4-2-2 嵌套if(cascading if) 49
4-2-3 switch语句 49
4-2-4 在switch中使用goto 51
4-3 重复执行的语句 52
4-3-1 while语句 53
4-3-2 do语句 53
4-3-3 for语句 54
4-3-4 foreach语句 55
4-4 跳转语句 56
4-4-1 goto语句 56
4-4-2 break与continue语句 57
4-5 异常错误 57
4-5-1 产生异常错误 59
4-5-2 检查数值溢出 60
总结 61
第5章 方法与参数 63
5-1 定义方法 64
5-2 调用其他类的方法 65
5-3 声明局部变量 66
5-4 共享变量 67
5-5 使用返回值 69
5-6 声明与使用参数 70
5-7 参数传递机制 71
5-7-1 使用值参数 71
5-7-2 使用输出参数 73
5-7-3 使用引用参数 74
5-8 使用引用参数常见的错误 76
5-9 声明不定长度的参数 76
5-10 参数传递的准则 77
5-11 使用递归方法 78
5-12 重载方法 79
总结 80
第6章 数组 81
6-1 什么是数组 82
6-2 声明数组 82
6-4 访问数组元素 83
6-3 数组维度 83
6-5 使用Length属性检查数组上下限 85
6-6 数组与集合的比较 86
6-7 声明时初始化数组 86
6-7-1 使用简短的表示法 87
6-7-2 初始化多维的数组 89
6-8 运行时指定数组的大小 89
6-9 不规则数组(Jagged Array) 90
6-10 复制数组变量 92
6-11-1 数组常用的属性 94
6-11 数组的应用 94
6-11-2 数组常用的方法 95
6-11-3 由方法返回一个数组 98
6-11-4 把数组当参数传递 99
6-12 命令行参数 100
总结 101
第7章 面向对象程序设计 103
7-1 面向对象的缘由 104
7-2 类(Class) 105
7-3 命名空间 105
7-6 继承(Inheritance) 106
7-4 降低维护的负担 106
7-5 数据封装(Encapsulation) 106
7-7 多态性(Polymorphism) 107
7-8 抽象化(Abstraction) 107
总结 108
第8章 类、命名空间 109
8-1 类与对象 110
8-1-1 类的成员 110
8-1-2 对象 110
8-1-3 定义类的语法 111
8-2 类与结构的比较 113
8-3 数据封装 114
8-4 数据与方法的访问控制 114
8-4-1 使用成员访问修饰符 115
8-4-2 良好的数据隐藏方式设计 116
8-4-3 数据封装的目的 116
8-5 使用静态成员 117
8-5-1 声明及初始化静态数据 117
8-5-2 使用静态方法 118
8-6 C#与面向对象 119
8-6-1 再探Hello World 119
8-5-3 静态成员使用准则 119
8-6-2 以static定义Main 120
8-7 定义类与创建实体 120
8-8 使用访问修饰符 122
8-9 创建嵌套类 126
8-10 命名空间 129
8-10-1 声明命名空间 129
8-10-2 命名空间的作用域(Scope) 131
8-10-3 使用命名空间的好处 132
8-11 完全限定名 133
8-10-4 命名空间访问控制 133
8-12 使用using前缀指令 134
8-13 使用别名(Alias) 137
8-14 使用命名空间的准则 138
总结 138
第9章 引用类型变量 139
9-1 使用引用类型变量 140
9-2 引用类型与值类型 140
9-2-1 值类型 140
9-2-2 引用类型 140
9-2-3 值类型与引用类型的差异 140
9-3-1 声明引用类型变量 141
9-3 声明与释放引用类型变量 141
9-3-2 释放引用类型变量 143
9-4 比较引用类型变量与值类型变量 143
9-5 多个引用类型变量引用到同一个对象 145
9-6 以引用变量当作方法的参数 147
9-7 常用的引用类型 149
9-7-1 Exception类 149
9-7-2 String类 149
9-7-3 比较字符串的方法与运算符 152
9-7-4 C#对象层次结构 154
9-8 .NET Framework常用的类 155
9-8-1 System.IO 156
9-8-2 System.XML 157
9-9 数据类型转换 157
9-9-1 隐式转换(Implicit Conversions) 158
9-9-2 显式转换(Explicit Conversions) 158
9-10 Parent与Child之间的转换 158
9-10-1 转换成Parent Class的引用 158
9-10-2 转换成Child Class的引用 159
9-11 使用is运算符 162
9-12 使用as运算符 163
9-13 object类型转换守则 164
9-14 Boxing与Unboxing 165
9-14-1 Boxing 165
9-14-2 Unboxing 165
总结 166
第10章 对象的生存期 167
10-1 了解构造函数 168
10-1-1 使用new获取内存 168
10-1-2 托管堆(Managed Heap)的内存分配 168
10-2-1 默认构造函数的特性 169
10-2 默认构造函数 169
10-1-3 初始化对象 169
10-2-2 编译器自动产生的构造函数 170
10-2-3 定义默认构造函数 170
10-2-4 定义构造函数原则 172
10-3 重载构造函数 172
10-4 重载构造函数潜在的问题 173
10-4-1 解决重复初始化代码的问题 174
10-4-2 使用constructor-initializer 174
10-5 初始化只读数据 176
10-6 在构造函数中使用out与ref 177
10-7 struct构造函数 178
10-8 static构造函数 181
10-8-1 使用static构造函数初始化静态成员 181
10-8-2 static构造函数的限制 182
10-9 对象与内存 183
10-9-1 对象的生命周期 183
10-9-2 局部变景的生命周期 183
10-10 谁来“摧毁”对象 184
10-11 使用Finalize方法 184
10-12 编写析构函数 185
10-13 实现IDisposable接口 187
总结 190
第11章 继承、多态性与接口 191
11-1 派生基类的功能 192
11-1-1 继承的语法 192
11-1-2 简单的UML描述 193
11-2 派生类的继承 196
11-2-1 使用访问修饰符控制访问权限 196
11-2-2 protected成员的继承 197
11-3 调用基类的构造函数 197
11-4 覆盖基类的方法 200
11-4-1 定义虚拟方法 200
11-4-1 虚拟方法与覆盖方法的守则 202
11-5 隐藏基类方法 203
11-6 使用sealed类与sealed方法 205
11-7 版本控制 205
11-8 使用接口 212
11-9 以明确的方式实现接口 215
11-10 抽象类 216
11-10-1 抽象方法 218
11-10-2 不实现接口的抽象类 218
11-11 抽象类与接口 220
11-12 抽象方法与版本控制 221
总结 222
第12章 属性与索引器 223
12-1 组件定义 224
12-2 属性 224
12-2-1 为什么要用属性 224
12-2-2 使用属性的好处 226
12-3 属性的种类 226
12-4 使用访问器 226
12-4-1 使用get访问器 227
12-4-2 使用set访问器 227
12-4-3 使用get、set访问器 228
12-5 编译器运行的情形 230
12-6 属性与类数据成员的比较 232
12-6-1 属性是逻辑上的类数据成员 232
12-6-2 属性和数据成员的相似性 232
12-6-3 属性和数据成员的不同点 233
12-7 访问属性与类数据成员的比较 234
12-8 属性与方法的比较 234
12-8-1 属性和方法之间的相似性 234
12-8-2 属性和方法之间的不同点 235
12-9-2 定义索引器 236
12-9-1 为什么要使用索引 236
12-9 索引器(Indexer)的使用 236
12-10 索引器和数组的比较 242
12-11 重载索引器(Indexer Overloading) 242
12-12 索引器与属性的比较 244
12-12-1 索引器与属性的相似性 245
12-12-2 索引器与属性的不同点 245
12-13 索引器设计准则 245
总结 246
第13章 运算符、Delegate与事件 247
13-1-1 重载运算符的语法 248
13-1 重载运算符 248
13-1-2 重载相同的运算符多次 252
13-1-3 转换运算符 255
13-2 创建并使用委托类型 258
13-3 事件 262
13-3-1 在事件发行者中定义一个事件 264
13-3-2 在事件发行者中触发事件 264
13-3-3 在事件订阅者中定义事件处理程序 265
13-3-4 向事件发行者订阅一个事件 265
13-4 连接、删除事件设计准则 266
13-6-1 Sender对象与事件参数 268
13-5 .NET Framework事件设计准则 268
13-6 传递事件的参数 268
13-6-2 定义delegate函数模板 270
13-6-3 EventArgs类的设计 270
13-6-4 事件处理程序的编写 271
13-6-5 触发事件 271
总结 272
第14章 Attribute与Reflection 273
14-1 什么是Attribute 274
14-2 使用Attribute 275
14-3 自定义Attribute类 276
14-3-1 Attribute适用的元素 277
14-3-2 设计Attribute类 278
14-3-3 使用Attribute 278
14-3-4 获取Attribute的值 280
14-4 Reflection 281
14-4-1 Reflection设计理念 282
14-4-2 中继数据(Metadata) 282
总结 285
第15章 编写数据库应用程序 289
第2篇 实战演练篇 289
练习一:创建用户界面 290
练习二:编写公用函数 295
练习三:读取数据库数据,创建DataSet 297
练习四:自定义dataGrid显示样式 305
练习五:插入、删除、修改数据 307
练习六:增加核对程序运行的代码 309
第16章 编写Master/Detail数据库应用程序 311
练习一:创建Master/Detail关系的DataSet 313
练习二:自定义dataGrid显示样式 316
练习三:设计显示明细数据的窗体 318
练习四:使用BindingContext浏览数据 323
第17章 设计Windows From应用程序 327
实例一:设计MDI应用程序 328
练习一:使用StatusBar与Timer控件 329
练习二:设计菜单 332
练习三:编写菜单代码 335
实例二:设计GDI+应用程序 337
练习一:绘制统计图表 338
练习二:使用FontDialog设置字体 341
练习三:设置打印格式 342
练习四:打印预览与打印报表 343
练习五:使用PrintDialog选择打印机 348
练习六:保存图形文件 349
第18章 使用COM+服务 351
练习一:编写.NET组件 353
练习二:编写转帐类 360
练习三:创建KeyFile与Strong Name 363
练习四:创建客户端的接口 364
练习五:测试COM+应用程序 367
第19章 编写一个监控文件变动的Windows Service 369
练习一:使用Windows Service模板 370
练习二:使用EventLog与FileSystemWatcher控件 371
练习三:使用Installer类 372
练习四:安装Windows Service 373
练习五:启动服务与暂停服务 374
第20章 编写资源管理器 375
练习一:创建UCOM File Manager用户界面 377
练习二:编写初始化应用程序的代码 379
练习三:编写事件过程 383
练习四:打开文本文件 385
第21章 编写提供数据的Web Service 389
练习一:创建Web Service 390
练习二:编写使用Web Service的Windows Forms客户端 395
第22章 编写ASP.NET网页 399
练习一:创建ASP.NET项目 400
练习二:设计分页 405
练习三:增加编辑数据的按钮 406
练习四:编写修改、取消、保存按钮事件处理过程 407
练习五:编写添加功能 409
练习六:编写删除功能 410
附录 413
英中文对照表 413