第1部分 C#.NET面向对象程序设计语言的基础知识第1章 C#语言介绍 3
1.1 C#语言概述 3
1.1.1 C#语言简介 3
1.1.2 C#语言的特点和开发应用范围 3
1.2 C#语言的编译和运行环境 5
1.2.1 C#语言与.NET Framework 5
1.2.2 C#的运行环境 6
1.2.3 C#的开发环境 6
1.3 创建简单的C#程序 7
1.3.1 Hello,World程序 7
1.3.2 代码分析 7
1.3.3 编译和运行结果 8
1.4 C#程序的基本结构 8
1.4.1 程序结构 8
1.4.2 命名空间 10
1.4.3 类和对象 14
1.4.4 Main方法 15
1.4.5 注释 18
1.5 本章小结 19
第2章 数据类型、变量和常量 21
2.1 数据类型 21
2.1.1 类型系统 21
2.1.2 值类型 22
2.1.3 引用类型 22
2.1.4 装箱和拆箱 23
2.2 变量 24
2.2.1 变量的命名规则 24
2.2.2 变量的声明和赋值 24
2.2.3 变量的分类 25
2.2.4 变量的作用域 26
2.3 常量 27
2.4 预定义数据类型 28
2.4.1 整型 28
2.4.2 浮点类型 30
2.4.3 decimal类型 31
2.4.4 bool类型 33
2.4.5 字符类型 33
2.4.6 object类型 35
2.4.7 string类型 35
2.4.8 可以为null的类型 36
2.5 类型转换 37
2.5.1 隐式转换 37
2.5.2 显式转换(强制转换) 37
2.5.3 Convert类提供的类型转换方法 38
2.5.4 checked关键字 39
2.6 本章小结 40
第3章 语句、运算符和表达式 42
3.1 语句 42
3.2 运算符 43
3.2.1 算术运算符 44
3.2.2 关系和类型测试运算符 46
3.2.3 逻辑运算符 46
3.2.4 赋值运算符 49
3.2.5 字符串运算符 51
3.2.6 位运算符 51
3.2.7 条件运算符 52
3.2.8 其他运算符 53
3.2.9 运算符优先级 54
3.3 表达式 55
3.3.1 表达式的组成 55
3.3.2 表达式的书写规则 55
3.4 本章小结 57
第4章 程序流程和异常处理 58
4.1 顺序结构 58
4.2 选择结构 59
4.2.1 if语句 59
4.2.2 switch语句 66
4.3 循环结构 68
4.3.1 for循环 68
4.3.2 while循环 70
4.3.3 do…while循环 71
4.3.4 foreach循环 73
4.3.5 循环的嵌套 74
4.4 跳转语句 75
4.4.1 goto语句 75
4.4.2 break语句 76
4.4.3 continue语句 76
4.4.4 return语句 77
4.5 异常处理 77
4.5.1 异常处理机制 77
4.5.2 创建和引发异常 79
4.6 本章小结 81
第5章 数组和指针 82
5.1 数组 82
5.1.1 一维数组 84
5.1.2 多维数组 86
5.1.3 交错数组 89
5.1.4 数组的基本操作和排序 91
5.1.5 作为对象的数组 96
5.2 指针 97
5.2.1 不安全代码 97
5.2.2 指针 98
5.3 本章小结 103
第6章 类和对象 105
6.1 面向对象概念 105
6.1.1 对象的定义 105
6.1.2 封装 105
6.1.3 继承 105
6.1.4 多态性 106
6.2 类和对象 106
6.2.1 类的声明 106
6.2.2 创建对象 108
6.2.3 访问修饰符 109
6.3 嵌套类 112
6.3.1 嵌套类的声明 112
6.3.2 嵌套类和包含类的关系 113
6.2.3 嵌套类的访问 114
6.4 分部类 115
6.5 本章小结 117
第7章 类成员 118
7.1 类的成员 118
7.1.1 数据成员 118
7.1.2 函数成员 119
7.1.3 静态成员和实例成员 119
7.2 字段 121
7.2.1 字段的声明和访问 121
7.2.2 静态字段和实例字段 122
7.2.3 常量字段 122
7.2.4 只读字段 123
7.2.5 可变字段 125
7.3 方法 126
7.3.1 方法的声明和调用 126
7.3.2 参数的传递 127
7.3.3 方法的重载 130
7.3.4 静态方法和实例方法 131
7.3.5 分部方法 132
7.3.6 外部方法 133
7.4 属性 134
7.4.1 属性的声明和访问 134
7.4.2 静态属性和实例属性 135
7.4.3 自动实现的属性 136
7.5 索引器 136
7.5.1 索引器的声明和访问 136
7.5.2 索引器的重载 138
7.6 运算符重载 139
7.6.1 运算符重载概述 139
7.6.2 转换运算符 140
7.7 构造函数和析构函数 142
7.7.1 实例构造函数 142
7.7.2 私有构造函数 143
7.7.3 静态构造函数 144
7.7.4 析构函数 145
7.8 本章小结 147
第8章 继承和多态 148
8.1 继承和多态的基本概念 148
8.1.1 继承和多态 148
8.1.2 继承的类型 149
8.2 派生类 150
8.2.1 派生类的简介 150
8.2.2 访问关键字this和base 151
8.2.3 虚方法、重写方法和隐藏方法 152
8.3 抽象类和抽象方法 153
8.3.1 抽象类 153
8.3.2 抽象方法 156
8.4 密封类和密封方法 158
8.4.1 密封类 158
8.4.2 密封方法 158
8.5 接口 159
8.5.1 接口声明 159
8.5.2 分部接口 160
8.5.3 接口成员 160
8.5.4 接口实现 160
8.5.5 接口继承 162
8.6 本章小结 164
第9章 委托和事件 165
9.1 委托 165
9.1.1 委托的声明 165
9.1.2 委托的实例化和调用 166
9.1.3 匿名方法委托 169
9.1.4 多播委托 169
9.1.5 委托的兼容性 171
9.2 事件 172
9.2.1 事件处理机制 172
9.2.2 事件的声明 174
9.2.3 事件的订阅和取消 174
9.2.4 静态事件和实例事件 175
9.2.5 .NET Framework事件模型 175
9.2.6 综合举例:实现事件的步骤 175
9.3 本章小结 177
第10章 结构和枚举 178
10.1 结构 178
10.1.1 结构概述 178
10.1.2 结构的声明 179
10.1.3 结构的调用 179
10.1.4 嵌套结构 180
10.1.5 分部结构 181
10.1.6 结构成员 181
10.2 枚举 182
10.2.1 枚举概述 182
10.2.2 枚举声明 182
10.2.3 枚举的使用 183
10.2.4 枚举的运算 184
10.2.5 System.Enum 185
10.3 本章小结 187
第11章 泛型 188
11.1 泛型的基本概念 188
11.1.1 引例ArrayList 188
11.1.2 引例List<T> 189
11.1.3 泛型的概念 190
11.2 泛型的定义 191
11.2.1 泛型的简介 191
11.2.2 泛型类型参数 192
11.2.3 泛型参数的约束 193
11.3 泛型类 194
11.4 泛型接口 195
11.5 泛型方法 197
11.6 泛型委托和泛型事件 198
11.6.1 泛型委托 198
11.6.2 泛型事件 199
11.7 default关键字 200
11.8 综合举例 200
11.9 本章小结 203
第12章 特性 204
12.1 特性概述 204
12.2 特性的使用 205
12.3 预定义通用特性类 205
12.3.1 ConditionalAttribute类 205
12.3.2 ObsoleteAttribute类 208
12.3.3 AttributeUsageAttribute类 208
12.3.4 全局特性 209
12.4 自定义特性类 210
12.5 使用反射访问特性 211
12.6 本章小结 212
第13章 语言集成查询 213
13.1 相关语言要素 213
13.1.1 初始值设定项 213
13.1.2 匿名类型 214
13.1.3 Lambda表达式 214
13.1.4 扩展方法 215
13.2 LINQ基本操作 216
13.2.1 LINQ基本概念 216
13.2.2 LINQ查询操作 217
13.3 标准查询运算符 219
13.3.1 数据排序 219
13.3.2 数据筛选 221
13.3.3 数据投影 221
13.3.4 数据分组 222
13.3.5 联接运算 222
13.3.6 数据分区 227
13.3.7 限定符运算 228
13.3.8 聚合运算 228
13.3.9 集合运算 229
13.3.10 生成运算 230
13.3.11 元素操作 230
13.3.12 串联运算 231
13.3.13 相等运算 231
13.3.14 数据类型转换 232
13.4 LINQ to Objects 233
13.4.1 LINQ to Objects概述 233
13.4.2 LINQ和字符串 233
13.4.3 LINQ和文件目录 237
13.5 本章小结 240
第14章 多线程编程技术 241
14.1 线程处理概述 241
14.1.1 进程和线程 241
14.1.2 线程的优缺点 241
14.2 创建多线程应用程序 242
14.2.1 C#应用程序主线程 242
14.2.2 创建和启动新线程 242
14.2.3 暂停和中断线程 243
14.3 线程优先级和线程调度 246
14.4 线程状态和生命周期 247
14.5 线程同步 248
14.5.1 线程同步处理 248
14.5.2 使用lock语句同步代码块 248
14.5.3 使用监视器同步代码块 250
14.5.4 同步事件和等待句柄 250
14.5.5 使用Mutex同步代码块 256
14.6 线程池 257
14.6.1 线程池的基本概念 257
14.6.2 创建和使用线程池 257
14.7 本章小结 259
第2部分 .NET Framework类库基本应用 263
第15章 数值、日期和字符串处理 263
15.1 数学函数 263
15.1.1 Math类和数学函数 263
15.1.2 Random类和随机函数 266
15.2 日期和时间处理 267
15.3 字符串处理 269
15.3.1 String类 269
15.3.2 StringBuilder类 272
15.3.3 字符编码 275
15.4 正则表达式 276
15.4.1 正则表达式语言 276
15.4.2 正则表达式类 277
15.4.3 正则表达式示例 277
15.5 本章小结 279
第16章 文件和流I/O 280
16.1 文件和流操作概述 280
16.2 磁盘、目录和文件的基本操作 281
16.2.1 磁盘的基本操作 281
16.2.2 目录的基本操作 282
16.2.3 文件的基本操作 287
16.3 文本文件的读取和写入 293
16.3.1 StreamReader类和StreamWriter类 293
16.3.2 StringReader类和StringWriter类 295
16.4 二进制文件的读取和写入 298
16.4.1 FileStream类 298
16.4.2 BinaryReader类和BinaryWriter类 299
16.5 通用I/O流类 301
16.6 本章小结 303
第17章 集合和数据结构 305
17.1 C#集合和数据结构概述 305
17.2 列表类集合类型 307
17.2.1 ArrayList 307
17.2.2 List<T> 311
17.3 字典类集合类型 314
17.3.1 Hashtable 314
17.3.2 Dictionary<TKey,TValue> 317
17.3.3 SortedList 319
17.3.4 SortedList<TKey,TValue> 323
17.3.5 SortedDictionary<TKey,TValue> 326
17.4 队列集合类型 329
17.5 堆栈集合类型 331
17.6 HashSet<T>集合类型 333
17.7 位集合 337
17.7.1 BitArray 337
17.7.2 BitVector32 340
17.8 专用集合 341
17.8.1 NameValueCollection 341
17.8.2 StringDictionary 343
17.8.3 Stringcollection 346
17.9 本章小结 349
第18章 数据库访问 351
18.1 ADO.NET概述 351
18.1.1 ADO.NET的基本概念 351
18.1.2 ADO.NET的结构 351
18.1.3 .NET Framework数据提供程序 352
18.1.4 ADO.NET DataSet 354
18.2 使用ADO.NET连接和操作数据库 355
18.2.1 使用数据提供程序访问数据库的步骤 355
18.2.2 使用DataAdapter和DataSet访问数据库的步骤 358
18.3 使用SQL命令和存储过程访问数据库 359
18.3.1 建立数据库连接 359
18.3.2 查询数据库表数据 361
18.3.3 插入数据库表数据 362
18.3.4 更新数据库表数据 363
18.3.5 删除数据库表数据 364
18.3.6 使用存储过程访问数据库 365
18.4 使用DataAdapter和DataSet访问数据库 367
18.4.1 查询数据库表数据 367
18.4.2 维护数据库表数据 368
18.5 LINQ to SQL 370
18.5.1 使用LINQ to SQL的典型步骤 370
18.5.2 LINQ to SQL查询举例 370
18.5.3 LINQ to SQL数据操作 371
18.6 LINQ to DataSet 373
18.6.1 LINQ to DataSet概述 373
18.6.2 LINQ to DataSet查询 373
18.7 本章小结 374
第3部分 C#.NET应用程序开发 379
第19章 Windows窗体应用程序 379
19.1 Windows窗体应用程序概述 379
19.1.1 Windows窗体应用程序 379
19.1.2 从命令行创建简单的Windows窗体应用程序 379
19.1.3 Windows窗体应用程序的代码分析 380
19.1.4 使用Visual Studio开发Windows窗体应用程序 381
19.2 窗体和控件概述 384
19.2.1 通用属性 385
19.2.2 通用事件 386
19.2.3 窗体属性、事件和方法 386
19.3 常用Windows窗体控件 389
19.3.1 标签、文本框和命令按钮 389
19.3.2 单选按钮、复选框和分组 393
19.3.3 列表选择控件 395
19.3.4 图形存储和显示控件 398
19.3.5 Timer控件 401
19.3.6 通用对话框 403
19.3.7 菜单设计 407
19.4 本章小结 410
第20章 WPF应用程序 411
20.1 WPF应用程序概述 411
20.1.1 WPF简介 411
20.1.2 WPF应用程序的构成 411
20.2 创建WPF应用程序 414
20.2.1 创建简单的WPF应用程序 414
20.2.2 WPF应用程序布局 416
20.2.3 WPF应用程序常用控件 417
20.3 WPF应用程序与图形和多媒体 421
20.3.1 图形和多媒体概述 421
20.3.2 图形、图像、画笔和位图效果 421
20.3.3 多媒体 427
20.3.4 动画 429
20.4 本章小结 432
第21章 ASP.NET Web应用程序 433
21.1 ASP.NET Web介绍 433
21.1.1 ASP.NET Web应用程序概述 433
21.1.2 创建ASP.NET Web应用程序 434
21.2 ASP.NET Web页面 435
21.2.1 ASP.NET Web页面概述 435
21.2.2 ASP.NET Web服务器控件概述 436
21.2.3 创建ASP.NET页面 437
21.3 ASP.NET页面会话状态和页面导航 445
21.3.1 ASP.NET Web应用程序上下文 445
21.3.2 ASP.NET Web应用程序事件 447
21.3.3 ASP.NET Web页面导航 449
21.4 ASP.NET Web应用程序的布局和导航 450
21.4.1 ASP.NET Web母版页 450
21.4.2 ASP.NETWeb导航控件 451
21.4.3 设计ASP.NET Web站点 454
21.5 ASP.NET主题和外观概述 455
21.5.1 ASP.NET主题和外观 455
21.5.2 定义主题 455
21.5.3 定义外观 455
21.5.4 定义CSS样式 456
21.5.5 在页面中使用主题 457
21.5.6 应用举例 458
21.6 本章小结 460
附录A .NET Framework概述 462
附录B C#编译器和预处理器指令 465
附录C Visual Studio简介 469
附录D C#3.0关键字 476
附录E 控制台I/O和格式化字符串 479
附录F XML文档注释 487
附录G SQL Server Express范例数据库 491
附录H ASCII码表 494
附录I 程序集、应用程序域和反射 495
参考文献 499