第1章 C#概述 1
1.1 什么是C# 1
1.2 NET Framework概述 2
1.2.1 什么是.NET平台 2
1.2.2 什么是.NET Framework 2
1.2.3 NET程序编译过程 5
1.2.4 C#与.NET Framework 6
1.3 配置Visual C#开发环境和启动退出操作 7
1.3.1 配置Visual C#开发环境 7
1.3.2 Visual C#的启动 8
1.3.3 Visual C#的退出 11
1.4 Visual C#的集成开发环境 11
1.4.1 Visual C#菜单栏 11
1.4.2 Visual C#工具栏 13
1.4.3 Visual C#工具箱 14
1.4.4 解决方案资源管理器 15
1.4.5 属性窗口 17
1.4.6 窗体设计器 18
1.4.7 代码编辑窗口 19
1.4.8 其他窗口 20
1.4.9 帮助系统 21
1.5 编辑器设置 21
练习题1 23
第2章 简单的C#程序设计 25
2.1 创建第一个Windows控制台应用程序 25
2.1.1 控制台应用程序示例 25
2.1.2 控制台应用程序项目的组成 27
2.1.3 控制台应用程序中的基本元素 30
2.2 创建第一个Windows应用程序 31
2.2.1 Windows应用程序示例 31
2.2.2 Windows应用程序项目的组成 34
2.2.3 Windows应用程序中的基本元素 35
练习题2 35
第3章 C#程序设计基础 37
3.1 标识符 37
3.2 C#中数据类型 38
3.2.1 值类型 39
3.2.2 引用类型 41
3.3 C#中的变量和常量 43
3.3.1 变量 43
3.3.2 值类型变量和引用类型变量的区别 44
3.3.3 常量 47
3.4 类型转换 48
3.4.1 隐式转换 48
3.4.2 显式转换 49
3.4.3 装箱和拆箱 50
3.5 结构类型和枚举类型 51
3.5.1 结构类型 51
3.5.2 枚举类型 53
3.6 C#运算符和表达式 55
3.6.1 算术运算符 55
3.6.2 字符串运算符 56
3.6.3 赋值运算符 56
3.6.4 关系运算符 56
3.6.5 逻辑运算符 57
3.6.6 位运算符 57
3.6.7 条件运算符 58
3.6.8 其他运算符 59
3.6.9 运算符的优先级 60
3.7 C#中常用类和结构 60
3.7.1 String类 61
3.7.2 Math类 64
3.7.3 Convert类 64
3.7.4 DateTime结构 65
练习题3 66
第4章 C#控制语句 70
4.1 选择控制语句 70
4.1.1 if语句 70
4.1.2 if…else语句 71
4.1.3 if…else if语句 72
4.1.4 switch语句 73
4.2 循环控制语句 75
4.2.1 while语句 75
4.2.2 do…while语句 76
4.2.3 for语句 76
4.3 跳转语句 77
4.3.1 break语句 77
4.3.2 continue语句 78
4.3.3 goto语句 79
练习题4 80
第5章 数组和集合 85
5.1 一维数组 85
5.1.1 一维数组的定义 85
5.1.2 一维数组的动态初始化 86
5.1.3 一维数组的静态初始化 87
5.1.4 访问一维数组中的元素 87
5.1.5 一组数组的越界 88
5.2 二维数组 88
5.2.1 二维数组的定义 89
5.2.2 二维数组的动态初始化 89
5.2.3 二维数组的静态初始化 89
5.2.4 访问二维数组中的元素 90
5.3 交错数组 91
5.3.1 交错数组的定义和初始化 91
5.3.2 访问交错数组中的元素 91
5.4 Array类 92
5.4.1 Array类的属性和方法 92
5.4.2 Array类中方法的使用 93
5.5 ArrayList类 94
5.5.1 ArrayList类的对象的定义 94
5.5.2 ArrayList类的属性 95
5.5.3 ArrayList类的方法 95
5.6 List<T>类 96
5.6.1 List<T>类的对象的定义 96
5.6.2 List<T>类的属性 96
5.6.3 List<T>类的方法 97
练习题5 99
第6章 面向对象程序设计 102
6.1 面向对象程序设计概述 102
6.1.1 面向对象的基本概念 102
6.1.2 面向对象的优点 103
6.2 类 104
6.2.1 类的声明 104
6.2.2 类的成员 105
6.2.3 分部类 105
6.2.4 类和结构类型的差异 106
6.3 对象 106
6.3.1 定义类的对象 106
6.3.2 访问对象的字段 107
6.3.3 调用对象的方法 107
6.4 构造函数和析构函数 109
6.4.1 构造函数 109
6.4.2 析构函数 111
6.5 静态成员 111
6.5.1 静态字段 112
6.5.2 静态方法 112
6.6 属性 115
6.6.1 什么是属性 115
6.6.2 属性声明及其使用 115
6.7 方法 116
6.7.1 什么是方法 116
6.7.2 方法的定义 116
6.7.3 方法的返回值 116
6.7.4 方法的参数 117
6.7.5 方法的重载 118
6.8 嵌套类 119
6.8.1 嵌套类的声明 119
6.8.2 this关键字 119
6.8.3 嵌套类和包含类的关系 121
6.9 索引器 122
6.9.1 什么是索引器 122
6.9.2 声明索引器 122
6.9.3 使用其他值进行索引 123
6.10 委托 124
6.10.1 什么是委托 124
6.10.2 定义和使用委托 125
6.10.3 委托对象封装多个方法 127
6.10.4 使委托与匿名方法关联 128
6.11 事件 129
6.11.1 事件处理机制 129
6.11.2 事件的创建和使用 130
6.12 运算符重载 134
6.12.1 运算符重载概述 134
6.12.2 一元运算符重载 134
6.12.3 二元运算符重载 135
6.13 类对象的转换 136
6.13.1 关键字is 136
6.13.2 关键字as 137
6.14 命名空间 138
6.14.1 命名空间概述 138
6.14.2 使用命名空间 138
练习题6 141
第7章 继承和接口设计 147
7.1 继承 147
7.1.1 什么是继承 147
7.1.2 派生类的声明 148
7.1.3 基类成员的可访问性 149
7.1.4 按次序调用构造函数和析构函数 149
7.1.5 使用sealed修饰符来禁止继承 151
7.2 多态性 152
7.2.1 隐藏基类方法 152
7.2.2 重写 152
7.3 抽象类 155
7.3.1 抽象类的特性 155
7.3.2 抽象方法 156
7.3.3 抽象属性 157
7.4 接口 158
7.4.1 接口的特性 158
7.4.2 接口的定义 158
7.4.3 接口的成员 159
7.4.4 接口的实现 160
7.4.5 接口映射 163
7.4.6 接口实现的继承 164
7.4.7 重新实现接口 166
7.5 接口在集合排序中的应用 168
7.5.1 ArrayList类的排序方法 168
7.5.2 IComparable接口 168
7.5.3 IComparer接口 170
练习题7 174
第8章 Windows窗体应用程序设计 180
8.1 窗体设计 180
8.1.1 创建Windows窗体应用程序的过程 180
8.1.2 窗体类型 181
8.1.3 窗体的常用属性 181
8.1.4 窗体的常用事件 184
8.1.5 窗体的常用方法 184
8.1.6 多个窗体之间的调用 185
8.1.7 窗体上各事件的引发顺序 190
8.1.8 焦点与Tab键次序 190
8.2 常用控件的设计 191
8.2.1 控件概述 191
8.2.2 富文本框控件 192
8.2.3 分组框控件 194
8.2.4 面板控件 194
8.2.5 复选框控件 195
8.2.6 单选按钮控件 197
8.2.7 图片框控件 198
8.2.8 组合框控件 199
8.2.9 列表框控件 201
8.2.10 带复选框的列表框控件 204
8.2.11 定时器控件 205
8.2.12 滚动条控件 206
8.2.13 月历控件 208
8.2.14 日期/时间控件 208
8.2.15 超链接标签控件 210
8.3 多文档窗体 211
8.4 窗体设计的事件机制 214
8.4.1 什么是事件处理程序 214
8.4.2 在Windows窗体中创建事件处理程序 214
8.4.3 在执行时为Windows窗体创建事件处理程序 215
8.4.4 将多个事件连接到Windows窗体中的单个事件处理程序 216
练习题8 218
第9章 用户界面设计 221
9.1 菜单设计 221
9.1.1 菜单的基本结构 221
9.1.2 创建下拉式菜单 223
9.1.3 弹出式菜单设计 228
9.1.4 为菜单项添加访问热键和快捷键 230
9.2 通用对话框 231
9.2.1 打开文件对话框 231
9.2.2 保存文件对话框 233
9.2.3 颜色对话框 235
9.2.4 字体对话框 235
9.3 图像列表框控件 236
9.3.1 建立ImageList控件 236
9.3.2 ImageList控件的属性 237
9.3.3 Images集合的属性和方法 238
9.4 树形视图控件 238
9.4.1 TreeView控件概述 239
9.4.2 建立TreeView控件 239
9.4.3 TreeView控件的属性 240
9.4.4 TreeView控件的事件和方法 240
9.4.5 Nodes集合和TreeNode对象 241
9.4.6 执行时TreeView控件的基本操作 242
9.5 列表视图控件 244
9.5.1 ListView控件概述 244
9.5.2 建立ListView控件 245
9.5.3 ListView控件的属性 246
9.5.4 ListView控件的事件和方法 246
9.5.5 Items集合和ListViewItem对象 247
9.5.6 Columns集合和ColumnHeader对象 248
9.5.7 执行时ListView控件的基本操作 249
9.6 工具栏控件 251
9.6.1 建立ToolStrip控件 251
9.6.2 ToolStrip控件的属性 252
9.6.3 Items集合和ToolStripButton对象 252
9.7 状态栏控件 253
9.7.1 建立StatusStrip控件 253
9.7.2 StatusStrip控件的属性 254
练习题9 254
第10章 图形设计 257
10.1 绘图概述 257
10.1.1 绘图的基本知识 257
10.1.2 什么是GDI+ 258
10.1.3 Graphics类 259
10.2 绘图的基本步骤 259
10.3 绘制图形 261
10.3.1 绘制直线 261
10.3.2 绘制矩形 262
10.3.3 绘制多边形 263
10.3.4 绘制圆和椭圆 263
10.3.5 绘制弧线 264
10.3.6 绘制饼形 265
10.3.7 绘制非闭合曲线 265
10.3.8 绘制闭合曲线 266
10.3.9 绘制贝济埃曲线 267
10.4 创建画图工具 268
10.4.1 创建画笔 268
10.4.2 创建笔刷 269
10.4.3 创建字体 271
10.5 绘制文本 271
练习题10 273
第11章 文件操作 275
11.1 文件和System.IO模型概述 275
11.1.1 文件类型 275
11.1.2 文件的属性 276
11.1.3 文件访问方式 277
11.2 System.IO模型 277
11.2.1 什么是System.IO模型 277
11.2.2 文件编码 278
11.2.3 C#的文件流 278
11.3 文件夹和文件操作 278
11.3.1 文件夹操作 278
11.3.2 文件操作 279
11.4 FileStream类 281
11.5 文本文件的操作 282
11.5.1 StreamReader类 282
11.5.2 StreamWriter类 284
11.6 二进制文件操作 286
11.6.1 BinaryWriter类 286
11.6.2 BinaryReader类 287
11.6.3 二进制文件的随机查找 289
11.7 序列化和反序列化 290
11.7.1 序列化 290
11.7.2 反序列化 291
练习题11 293
第12章 错误调试和异常处理 295
12.1 错误分类 295
12.1.1 语法错误 295
12.1.2 执行错误 296
12.1.3 逻辑错误 297
12.2 程序调试 297
12.2.1 调试工具 298
12.2.2 如何开始调试 298
12.2.3 设置断点 298
12.2.4 定位错误 299
12.2.5 调试过程 299
12.2.6 显示调试信息 299
12.2.7 单步跟踪 302
12.3 异常处理 302
12.3.1 异常概述 302
12.3.2 异常处理语句 303
12.3.3 常用的异常类 306
练习题12 306
第13章 C#高级特性 309
13.1 泛型 309
13.1.1 什么是泛型 309
13.1.2 泛型的声明和使用 310
13.2 反射 312
13.2.1 反射概述 312
13.2.2 反射中常用的类 312
13.2.3 反射的应用示例 315
13.3 多线程程序设计 318
13.3.1 多线程的概述 318
13.3.2 线程命名空间 319
13.3.3 Thread类及其应用 319
13.3.4 线程优先级和线程调度 323
13.3.5 线程互斥 327
13.3.6 线程同步 331
练习题13 333
第14章 ADO.NET数据库访问技术 335
14.1 数据库概述 335
14.1.1 关系数据库的基本结构 335
14.1.2 结构化查询语言 337
14.2 ADO.NET模型 341
14.2.1 ADO.NET简介 341
14.2.2 ADO.NET体系结构 342
14.2.3 ADO.NET数据库的访问流程 344
14.3 ADO.NET的数据访问对象 344
14.3.1 OleDbConnection对象 344
14.3.2 OleDbCommand对象 347
14.3.3 OleDbataReader对象 353
14.3.4 OleDbataAdapter对象 355
14.4 DataSet对象 360
14.4.1 DataSet对象概述 360
14.4.2 Dataset对象的属性和方法 361
14.4.3 Tables集合和DataTable对象 362
14.4.4 Columns集合和DataColumn对象 365
14.4.5 Rows集合和DataRow对象 366
14.4.6 Relations集合和DataRelation对象 368
14.5 数据绑定 369
14.5.1 数据绑定概述 369
14.5.2 BindingNavigator控件 374
14.6 DataView对象 377
14.6.1 DataView对象概述 377
14.6.2 DataView对象的列排序设置 378
14.6.3 DataView对象的过滤条件设置 379
14.7 DataG ridView控件 380
14.7.1 创建DataGridView对象 380
14.7.2 DataGridView对象的属性、方法和事件 383
14.7.3 DataGridView与DataView对象结合 386
14.7.4 通过DataGridView对象更新数据源 389
练习题14 391
第15章 XML及其应用 394
15.1 XML概述 394
15.2 XML语法规则 395
15.2.1 XML文档中有关的术语 395
15.2.2 XML文档的结构 398
15.2.3 XML文档的语法规定 400
15.3 XPath表达式 403
15.3.1 路径匹配 404
15.3.2 谓词 404
15.3.3 属性匹配 404
15.3.4 通配符 405
15.3.5 XPath轴 405
15.4 用NET Framework类操作XML文档 406
15.4.1 XML文档操作类 406
15.4.2 XML文档的节点操作 413
15.5 DataSet和XML文档的相互转换 416
15.5.1 将XML文档转换成DataSet数据 416
15.5.2 将DataSet数据转换成XML文件 416
练习题15 418
第16章 Web应用程序设计 420
16.1 ASP.NET概述 420
16.1.1 ASP.NET的发展历程 420
16.1.2 ASP.NET网页的组件 420
16.1.3 ASP.NET网页的执行方式 421
16.1.4 ASP.NET页面的结构 421
16.2 开发Web应用程序的准备工作 422
16.2.1 安装Web服务器 422
16.2.2 管理和配置服务器 423
16.3 创建一个简单的Web应用程序 427
16.4 基本ASP.NET服务器控件 431
16.4.1 服务器控件概述 431
16.4.2 Label、Button和TextBox控件 433
16.4.3 DropDownList控件 433
16.4.4 CheckBox、CheckBoxList、RadioButton和RadioButtonList控件 436
16.4.5 数据验证控件 439
16.4.6 链接控件 441
16.5 高级ASP.NET服务器端控件 443
16.5.1 AccessDataSource控件 443
16.5.2 GridView控件 446
16.5.3 DetailsView控件 453
练习题16 455
附录 部分练习题参考答案 457
参考文献 460