第一篇 入门知识 1
第1章 C#语言入门 1
1.1 C#简介 1
1.2 安装和配置Visual Studio 2005安装程序 2
1.2.1 Visual Studio 2005的基本情况 2
1.2.2 Visual Studio 2005的选择和安装 2
1.3 在CLI模式下编程 7
1.3.1 CLI模式编程的环境 7
1.3.2 Hello World程序代码 8
1.3.3 编译Hello World程序 9
1.4 在Visual Studio 2005环境中编程 11
1.4.1 Visual Studio 2005编辑器简介 11
1.4.2 创建项目 12
1.4.3 生成文件 13
1.4.4 设计用户界面 14
1.5 创建第一个Windows窗体应用程序 14
1.5.1 创建空的Windows窗体应用程序 14
1.5.2 完善功能 15
1.5.3 程序解释 18
1.6 总结 20
第2章 使用变量、操作符和表达式 21
2.1 标识符 21
2.1.1 标识符的演示程序 21
2.1.2 解释程序 23
2.2 标识关键字 24
2.3 类型 25
2.3.1 值类型 25
2.3.2 System.ValueType类型 25
2.3.3 默认构造函数 25
2.3.4 结构类型 26
2.3.5 结构类型的范例 26
2.3.6 简单类型 28
2.3.7 整型 29
2.3.8 浮点型 29
2.3.9 数字型 30
2.3.10 bool类型 30
2.3.11 枚举类型 31
2.3.12 枚举类型的范例 31
2.3.13 枚举类型程序的解释 33
2.3.14 引用类型 34
2.3.15 类类型 34
2.3.16 Object类型 35
2.3.17 Object类型的范例 35
2.3.18 Object类型范例的解释 38
2.3.19 string类型 39
2.3.20 接口类型 39
2.4 常量和变量 42
2.4.1 常量 42
2.4.2 静态变量 42
2.4.3 实例变量 43
2.4.4 变量的引用 45
2.5 理解语句 45
2.5.1 块语句 45
2.5.2 声明语句和表达式语句 45
2.5.3 选择语句和迭代语句 46
2.5.4 跳转语句 47
2.6 使用算术运算符 49
2.6.1 关系运算符与赋值运算符 49
2.6.2 逻辑运算符 50
2.6.3 算术运算符 50
2.6.4 位运算符 51
2.6.5 条件运算符 53
2.6.6 类型信息运算符 55
2.6.7 checked和unchecked运算符 58
2.6.8 控制优先级 62
2.7 总结 62
第3章 使用循环语句 63
3.1 声明bool变量 63
3.1.1 bool变量的实例 63
3.1.2 bool变量实例的解释 65
3.2 使用if语句 66
3.2.1 理解if语句的语法 66
3.2.2 使用else语句 66
3.2.3 嵌套if语句 67
3.2.4 if语句的实例 68
3.2.5 if语句实例的解释 69
3.3 使用switch语句 70
3.3.1 理解switch语句的语法 71
3.3.2 switch语句的实例 72
3.3.3 switch语句实例的解释 73
3.4 使用while语句 74
3.4.1 while语句的实例 74
3.4.2 while语句实例的解释 75
3.5 使用for语句 76
3.5.1 for循环语句的语法 76
3.5.2 for循环语句的实例 77
3.5.3 for循环语句实例的解释 79
3.6 使用foreach语句 79
3.6.1 foreach循环语句的实例 80
3.6.2 foreach循环语句实例的解释 81
3.7 使用do语句 82
3.7.1 do语句的语法 82
3.7.2 do语句的实例 82
3.7.3 do语句实例的解释 83
3.8 总结 84
第4章 处理错误和异常 85
4.1 处理错误 85
4.1.1 异常处理的实例 85
4.1.2 异常处理机制的解释 87
4.2 抛出异常的throw 87
4.2.1 抛出异常的实例 88
4.2.2 抛出异常实例的解释 89
4.3 捕获异常的catch 90
4.3.1 捕获异常的实例 90
4.3.2 捕获异常实例的解释 92
4.4 使用多个catch处理程序 93
4.4.1 使用多个catch处理程序的实例 94
4.4.2 使用多个catch处理程序实例的解释 97
4.5 使用finally清理异常 98
4.5.1 finally清理异常的实例 99
4.5.2 finally实例的解释 102
4.6 使用Exception类 104
4.6.1 构造Exception对象 104
4.6.2 StackTrace特性 109
4.7 总结 111
第二篇 深入学习C#语言 113
第5章 类和对象 113
5.1 理解类的概念 113
5.2 定义类 114
5.2.1 类的成员 114
5.2.2 访问修饰符 115
5.2.3 Main()方法 116
5.3 构造函数 122
5.3.1 构造函数的演示程序 122
5.3.2 构造函数的演示程序的解释 123
5.3.3 声明变量与实例化变量 124
5.3.4 C#语言的构造函数的初始化 126
5.3.5 析构函数 130
5.4 静态成员与实例变量 132
5.4.1 静态成员与实例成员 132
5.4.2 构造函数中的静态成员与实例变量 134
5.4.3 使用const关键字来创建static字段 138
5.4.4 只读字段 139
5.5 类的继承 143
5.5.1 类的继承的实例 143
5.5.2 类的继承的实例的解释 145
5.5.3 封闭类 146
5.6 总结 148
第6章 枚举和结构 149
6.1 使用枚举 149
6.1.1 声明枚举类型 149
6.1.2 枚举类型的范例 150
6.1.3 使用枚举进行类型转换 151
6.1.4 枚举类型的转换 151
6.1.5 枚举中的System.FlagsAttribute 152
6.1.6 FlagsAttribute的范例 153
6.2 使用结构类型 155
6.2.1 声明结构类型 155
6.2.2 结构类型的范例 156
6.2.3 理解结构和类的区别 157
6.2.4 结构变量的声明范例 158
6.2.5 复制结构变量 159
6.2.6 复制结构变量的实例 160
6.3 总结 162
第7章 数组和集合 163
7.1 数组 163
7.1.1 声明数组变量 163
7.1.2 创建数组实例和初始化变量 165
7.1.3 遍历多维数组 166
7.1.4 访问二维数组的范例的解释 168
7.1.5 使用数组的Rank属性 169
7.1.6 复制数组 170
7.2 集合类 172
7.2.1 ArrayList类 172
7.2.2 Queue类 173
7.2.3 Stack类 175
7.2.4 Hashtable类 176
7.2.5 SortedList类 178
7.3 使用数组参数 180
7.3.1 使用一维数组参数 180
7.3.2 使用二维数组参数 181
7.3.3 声明params数组 182
7.4 总结 183
第8章 值和引用 184
8.1 理解值类型 184
8.1.1 声明值类型 184
8.1.2 值类型的生存期 186
8.1.3 声明新的值类型 186
8.2 理解引用类型 191
8.2.1 处理数组 192
8.2.2 处理字符串 193
8.3 Boxing与Unboxing操作 196
8.3.1 Boxing操作 196
8.3.2 Unboxing操作 196
8.3.3 Boxing和Unboxing的范例 197
8.4 参数传递 198
8.4.1 值参数 199
8.4.2 引用参数 200
8.4.3 创建ref参数 202
8.4.4 创建out参数 204
8.5 内存分配 205
8.5.1 垃圾回收机制 206
8.5.2 System.Object类 208
8.6 总结 208
第9章 使用继承和多态 209
9.1 继承 209
9.2 使用继承 209
9.2.1 基类和派生类 209
9.2.2 使用Base方法调用基类构造函数 212
9.2.3 new方法 214
9.2.4 virtual方法 216
9.2.5 override方法 218
9.3 创建接口 220
9.3.1 接口语法 220
9.3.2 接口限制 221
9.3.3 实现接口 221
9.3.4 接口的继承 223
9.3.5 ICloneable接口 225
9.4 抽象类 227
9.4.1 抽象类的定义 228
9.4.2 抽象类的实例 228
9.5 多态 230
9.5.1 多态的定义 230
9.5.2 多态的实例 231
9.6 总结 232
第10章 实现Property(属性) 233
10.1 封装和属性 233
10.1.1 封装 233
10.1.2 属性 234
10.2 属性的定义 235
10.2.1 Attribute类 235
10.2.2 只读属性 237
10.2.3 可读写属性 238
10.2.4 只读属性 240
10.3 属性的局限性 242
10.4 总结 242
第11章 枚举集合 243
11.1 枚举集合中的元素 243
11.1.1 数组与枚举 243
11.1.2 IEnumerable接口 244
11.1.3 实现IEnumerable接口 245
11.2 使用迭代器来实现一个枚举器 247
11.2.1 yield关键字 247
11.2.2 迭代器概述 248
11.2.3 使用迭代器 249
11.3 总结 250
第12章 操作符重载 251
12.1 理解操作符 251
12.1.1 操作符重载的限制 251
12.1.2 重载的操作符 251
12.1.3 重载操作符的实例 252
12.1.4 创建对称操作符 253
12.2 声明递增和递减操作符 255
12.2.1 实现递增和递减操作符重载的实例 255
12.2.2 实例分析 257
12.3 定义操作符对 257
12.3.1 实现操作符对的实例 258
12.3.2 实例分析 259
12.4 理解转换操作符 260
12.4.1 用户定义的转换语法和规则 260
12.4.2 用户定义的转换操作符的实例 261
12.4.3 实例分析 263
12.5 总结 264
第13章 委托和事件 265
13.1 声明和使用委托 265
13.1.1 委托的概念 265
13.1.2 委托的声明 265
13.1.3 委托的创建 266
13.1.4 将委托作为回调方法 266
13.1.5 使用算符作为委托 268
13.1.6 组合委托 270
13.2 匿名方法 272
13.2.1 匿名方法的定义 272
13.2.2 使用匿名方法 272
13.3 事件处理 273
13.3.1 声明事件 273
13.3.2 订阅事件 274
13.3.3 触发事件 274
13.3.4 Windows窗体应用程序中的事件 275
13.3.5 使用事件 275
13.4 总结 277
第14章 使用索引器 278
14.1 索引器的概念 278
14.1.1 定义索引器 278
14.1.2 使用索引器的例子 279
14.1.3 理解索引器的访问过程 281
14.2 接口中的索引器 281
14.2.1 接口中实现索引器 281
14.2.2 实现实例 282
14.3 属性、数组和索引器 283
14.3.1 使用数组实现对对象的访问 283
14.3.2 使用索引器实现对对象的访问 285
14.4 索引器的局限性 286
14.5 总结 286
第15章 泛型概述 287
15.1 泛型的提出 287
15.1.1 泛型的声明 287
15.1.2 泛型的特点 288
15.2 泛型的解决方案 290
15.2.1 泛型的类型参数 290
15.2.2 泛型的约束 291
15.3 创建泛型类 294
15.3.1 创建泛型类型的注意事项 294
15.3.2 泛型接口 295
15.3.3 泛型接口的规则 299
15.4 创建泛型方法 300
15.5 总结 301
第三篇 C#典型应用 303
第16章 文件与I/O 303
16.1 流类 303
16.1.1 FileStream 304
16.1.2 StreamReader与StreamWriter 307
16.1.3 内存与缓冲流 308
16.1.4 字符串读取器和写出器 311
16.1.5 二进制读取器和写出器 312
16.2 文件系统类 313
16.2.1 Directory和DirectoryInfo 313
16.2.2 File和FileInfo 316
16.2.3 分析路径 317
16.3 流的非控制台使用方式 318
16.3.1 OpenFileDialog 318
16.3.2 读取Web页面 319
16.4 串行化 320
16.4.1 使用BinaryFormatter进行串行化 321
16.4.2 使用ISerializable 323
16.5 总结 325
第17章 垃圾回收和资源管理 326
17.1 垃圾收集 326
17.1.1 GC的原理 326
17.1.2 编写析构函数 327
17.1.3 强制的垃圾收集 329
17.2 资源管理 330
17.2.1 dispose方法 331
17.2.2 IDisposable方法 332
17.3 总结 334
第18章 Windows Form编程基础 335
18.1 创建应用程序 335
18.1.1 创建Windows窗体应用程序 335
18.1.2 生成的文件 336
18.1.3 执行Windows窗体项目 339
18.1.4 公共Windows窗体属性 339
18.2 在窗体上添加控件 340
18.2.1 使用Label窗体控件 340
18.2.2 使用TextBox控件 342
18.2.3 使用Button控件 344
18.2.4 使用ComboBox控件 345
18.2.5 使用CheckBox控件 347
18.2.6 使用ListBox控件 348
18.2.7 使用MonthCalendar控件 350
18.2.8 使用RichTextBox控件 352
18.2.9 使用WebBrowser控件 353
18.3 处理菜单事件 356
18.3.1 创建菜单 356
18.3.2 菜单事件的应用 356
18.3.3 快捷菜单 359
18.4 使用公共对话框控件 360
18.4.1 使用OpenFileDialog控件 360
18.4.2 使用SaveFileDialog控件 362
18.5 验证数据 364
18.5.1 CausesValidation属性 364
18.5.2 校验事件 364
18.5.3 使用ErrorProvider控件验证的实例 364
18.6 总结 366
第19章 ASP.NET 2.0概述 367
19.1 理解ASP.NET 367
19.1.1 Web服务器请求和应答 367
19.1.2 管理状态 368
19.2 使用ASP.NET创建Web应用程序 369
19.2 1 配置IIS服务器 369
19.2.2 构建ASP.NET应用程序 370
19.2.3 代码解析 371
19.3 理解HTML控件 373
19.3.1 Input(Button):按钮控件 373
19.3.2 Input(Text):文本控件 374
19.3.3 Input(Submit):提交控件 375
19.3.4 Input(Reset):重置控件 376
19.3.5 Input(Checkbox):复选框控件 377
19.3.6 Input(Radio):单选按钮控件 378
19.3.7 Input(File):上传控件 379
19.3.8 Input(Hidden):隐藏控件 381
19.4 理解ASP.NET控件 382
19.4.1 Button:按钮控件 382
19.4.2 TextBox:文本框控件 382
19.4.3 DropdownList:下拉列表框控件 383
19.4.4 ListBox:列表框控件 384
19.4.5 CheckBox:复选框控件 384
19.4.6 RadioButton:单选按钮控件 385
19.4.7 Image:图像控件 386
19.4.8 Table:表格控件 386
19.4.9 FileUpload:上传控件 387
19.5 校验控件 388
19.5.1 RequiredFieldValidator:验证输入是否为空 388
19.5.2 CompareValidator:比较验证 391
19.5.3 RangeValidator:范围验证 392
19.5.4 RegularExpressionValidator:正则表达式验证 393
19.5.5 CustomValidator:用户自定义验证 393
19.5.6 ValidationSummary:汇总显示验证 395
19.6 创建和使用主题 395
19.6.1 主题和控件外观概述 395
19.6.2 主题的应用范围 396
19.6.3 使用主题定义网站 397
19.7 使用Web窗体的GridView控件 398
19.7.1 使用GridView控件 398
19.7.2 GridView控件的格式设定 399
19.7.3 分页和排序 402
19.7.4 使用PagerStyle属性和PagerSettings属性 405
19.7.5 GridView控件的更新 405
19.8 总结 408
第20章 数据库访问技术 409
20.1 概述 409
20.1.1 基本概念 409
20.1.2 安装SQLServer 410
20.1.3 SQLServer基本操作 413
20.2 结构化查询语言 415
20.2.1 SQL基本语法和语句 415
20.2.2 常用函数 417
20.3 ADO.NET概述 418
20.4 连接数据库 419
20.4.1 连接SQLServer数据库 420
20.4.2 连接Access数据源 423
20.5 读取和操作数据 427
20.5.1 读取数据 427
20.5.2 操作数据 431
20.5.3 调用存储过程 432
20.5.4 存储过程的参数 433
20.6 数据集 435
20.6.1 填充数据集 437
20.6.2 数据表、行和列 439
20.6.3 过滤数据集 444
20.7 数据绑定技术 446
20.7.1 数据绑定概述 446
20.7.2 Eval和Bind方法 447
20.8 数据源控件 448
20.8.1 SQL数据源控件SqlDataSource 448
20.8.2 Access数据源控件AccessDataSource 452
20.8.3 对象数据源控件ObjectDataSource 453
20.8.4 XML数据源控件XmlDataSource 456
20.8.5 站点地图数据源控件SiteMapDataSource 457
20.9 重复控件Repeater 459
20.9.1 Repeater控件概述 459
20.9.2 使用Repeater控件的模板 460
20.9.3 使用Repeater控件显示数据编号 461
20.10 数据列表控件DataList 462
20.10.1 DataList控件概述 462
20.10.2 使用DataList控件的模板 463
20.10.3 应用CommandArgument属性 465
20.10.4 应用DataKeyField属性获取主键 465
20.10.5 DataList控件的事件 465
20.11 网格视图控件GridView 467
20.11.1 GridView控件概述 467
20.11.2 GridView控件的模板、行和列 468
20.11.3 编辑数据 470
20.11.4 排序数据 470
20.12 总结 471
第四篇 综合案例 473
第21章 电子书店 473
21.1 程序功能预览 473
21.1.1 用户管理模块 473
21.1.2 管理员管理模块 474
21.2 模块解析 474
21.2.1 用户管理 474
21.2.2 公告信息 475
21.2.3 书籍列表 476
21.2.4 购物车 476
21.2.5 服务台 476
21.2.6 后台管理 477
21.2.7 库存管理 477
21.2.8 订单管理 478
21.3 数据库设计 478
21.3.1 表设计 478
21.3.2 UserInfo表的设计 479
21.3.3 AdminInfo表的设计 479
21.3.4 BulletinInfo表的设计 479
21.3.5 BooksInfo表的设计 480
21.3.6 BooksType表的设计 480
21.3.7 OrderInfo表的设计 480
21.3.8 OrderDetail表的设计 481
21.3.9 表的关系 481
21.4 网站整体风格设计 481
21.4.1 添加功能面板 482
21.4.2 添加登录控件 483
21.4.3 添加欢迎控件 485
21.4.4 书籍分类导航面板的构建 486
21.5 用户模块的构建 489
21.5.1 构建网站的首页 489
21.5.2 公告信息页面的构建 493
21.5.3 书籍列表页面的构建 494
21.5.4 书籍详细信息页面的构建 498
21.5.5 注册页面的构建 499
21.5.6 查看用户详细信息页面的构建 501
21.5.7 购物车功能的实现 504
21.5.8 服务台页面的实现 509
21.5.9 用户订单的构建 514
21.5.10 用户订单详细页面的构建 516
21.6 网站后台的整体风格构建 519
21.6.1 添加主功能面板 519
21.6.2 添加欢迎控件 519
21.6.3 添加分类导航面板 520
21.7 管理员模块的构建 520
21.7.1 管理员登录页面 521
21.7.2 书籍列表页面 522
21.7.3 书籍详细信息查看页面 527
21.7.4 书籍信息修改页面 529
21.7.5 设置特价书籍价格页面 532
21.7.6 添加新书籍页面 535
21.7.7 管理员列表页面 536
21.7.8 管理员详细信息页面 538
21.7.9 添加管理员的页面 540
21.7.10 用户列表页面 541
21.7.11 用户信息查看页面 542
21.7.12 订单列表页面 543
21.7.13 订单详情查看页面 546
21.7.14 公告列表页面 549
21.7.15 公告添加页面的构建 551
21.7.16 后续的完善工作 552
21.8 总结 552