第1章 绪论 1
1.1 C#简介 1
1.1.1 Visual C#.NET简介 1
1.1.2 Visual C#.NET的特点 2
1.1.3 C#与其他语言的关系 2
1.2 Visual Studio 2010开发环境 3
1.2.1 起始页窗口 3
1.2.2 菜单栏和工具栏 4
1.2.3 工具箱 5
1.2.4 “类视图”面板 6
1.2.5 代码编辑器/窗体设计器 6
1.2.6 “属性”面板 7
1.2.7 定制开发环境 7
1.3 简单的C#程序 8
1.3.1 创建C#程序项目 8
1.3.2 编写C#程序代码 9
1.3.3 编译、连接与运行 10
1.3.4 C#程序结构分析 10
1.4 基本输入/输出 14
1.4.1 Console.WriteLine()方法 14
1.4.2 Console.Write()方法 17
1.4.3 Console.ReadLine()方法 17
1.4.4 Console.Read()方法 19
自我测试练习 19
第2章 数据类型、运算符和表达式 21
2.1 关键字和标识符 21
2.1.1 关键字 21
2.1.2 标识符 22
2.1.3 中文标识符 23
2.1.4 标识符的命名约定 24
2.2 常量与变量 24
2.2.1 常量 24
2.2.2 变量 27
2.3 基本数据类型 28
2.3.1 值类型 28
2.3.2 引用类型 29
2.3.3 类型转换 31
2.4 运算符与表达式 36
2.4.1 算术运算符与算术表达式 36
2.4.2 关系运算符与关系表达式 39
2.4.3 逻辑运算符与逻辑表达式 40
2.4.4 位运算符与位运算 41
2.4.5 条件运算符 45
2.4.6 赋值运算符与赋值表达式 45
2.4.7 运算符的优先级与结合顺序 47
2.5 情境应用——案例拓展 48
2.5.1 案例:解方程ax2+bx+c=0(a≠0) 48
2.5.2 案例:逻辑推理与判断 49
自我测试练习 50
第3章 结构化程序设计 52
3.1 顺序结构 52
3.1.1 简单赋值语句 52
3.1.2 复合赋值语句 52
3.2 选择结构 53
3.2.1 if语句 53
3.2.2 if语句的嵌套 56
3.2.3 switch语句 58
3.3 循环语句 59
3.3.1 while语句 59
3.3.2 do-while语句 60
3.3.3 for语句 61
3.3.4 foreach语句 63
3.3.5 循环的嵌套 64
3.4 break、continue和goto语句 66
3.4.1 break语句与continue语句 66
3.4.2 goto语句和标号语句 68
3.5 情境应用——案例拓展 69
3.5.1 案例:爱因斯坦阶梯问题 69
3.5.2 案例:趣味古典数学问题 70
自我测试练习 71
第4章 数组和枚举 74
4.1 一维数组 74
4.1.1 一维数组的定义 74
4.1.2 一维数组的引用 75
4.1.3 一维数组初始化 76
4.2 多维数组 78
4.2.1 二维数组的定义 78
4.2.2 二维数组的引用 78
4.2.3 二维数组初始化 79
4.3 不规则数组 82
4.3.1 不规则数组的定义 82
4.3.2 不规则数组的引用 82
4.3.3 不规则数组的初始化 83
4.4 综合应用举例 84
4.4.1 数组与System.Array 84
4.4.2 foreach语句的应用元素 85
4.4.3 数组元素的清空 86
4.4.4 数组的查找 86
4.4.5 数组的排序 87
4.5 枚举 88
4.5.1 枚举类型的定义 88
4.5.2 枚举变量的定义 89
4.5.3 引用枚举 89
4.6 情境应用——案例拓展 90
4.6.1 案例:冒泡排序 90
4.6.2 案例:不同进制数的转换 92
自我测试练习 93
第5章 面向对象编程基础 95
5.1 类和对象 95
5.1.1 类的声明 95
5.1.2 对象的声明 96
5.1.3 类成员的访问控制 98
5.2 方法 100
5.2.1 方法的声明 100
5.2.2 方法的参数 101
5.2.3 构造函数 106
5.2.4 析构函数 108
5.2.5 方法的重载 109
5.2.6 重载构造函数 112
5.2.7 Main方法 113
5.3 属性 113
5.3.1 属性的定义 113
5.3.2 属性的读写控制 115
5.4 静态成员与实例成员 116
5.4.1 静态数据成员 116
5.4.2 静态方法 117
5.4.3 静态构造函数 118
5.5 结构 119
5.5.1 结构的声明 119
5.5.2 结构成员的访问 120
5.5.3 结构与类的区别 121
5.6 索引器 122
5.6.1 索引器的定义 123
5.6.2 类中的索引器 123
5.6.3 结构中的索引器 124
5.7 情境应用——案例拓展 125
5.7.1 案例:静态成员的应用实例 125
5.7.2 案例:复杂索引器的应用实例 127
自我测试练习 129
第6章 面向对象编程进阶 131
6.1 类的继承 131
6.1.1 继承概述 131
6.1.2 继承的实现 132
6.1.3 构造函数与析构函数 134
6.1.4 成员的继承、添加和隐藏 135
6.1.5 关键字base和this 136
6.1.6 访问控制 138
6.2 类的多态 141
6.2.1 虚方法 141
6.2.2 抽象类 142
6.3 运算符重载 143
6.3.1 运算符重载的定义 144
6.3.2 双目运算符重载为类成员方法 144
6.3.3 单目运算符重载为类成员方法 147
6.4 接口 148
6.4.1 接口的声明 149
6.4.2 接口的实现 150
6.4.3 接口与多重继承 151
6.5 委托 153
6.5.1 委托概述 153
6.5.2 多路委托 155
6.6 事件 157
6.6.1 事件概述 157
6.6.2 定义事件 158
6.6.3 预定事件 158
6.6.4 引发事件 158
6.7 情境应用——案例拓展 159
6.7.1 案例:抽象类的应用实例 159
6.7.2 案例:利用委托进行四则运算 161
自我测试练习 162
第7章 泛型和异常处理 165
7.1 泛型简介 165
7.2 泛型方法 166
7.2.1 泛型方法的定义 166
7.2.2 泛型方法的调用 168
7.2.3 泛型方法的重载 169
7.3 泛型类 171
7.3.1 泛型类的定义 171
7.3.2 泛型参数的约束 172
7.3.3 泛型类的重载 174
7.3.4 泛型类的继承 174
7.4 异常处理 176
7.4.1 异常的概念 176
7.4.2 常见的异常类 176
7.4.3 异常处理 178
7.5 情境应用——案例拓展 173
7.5.1 案例:冒泡排序泛型类 173
7.5.2 案例:最大值泛型类 184
自我测试练习 186
第8章 目录与文件操作 188
8.1 目录和文件管理 188
8.1.1 文件类File 188
8.1.2 目录类Directory 189
8.1.3 文件信息类FileInfo 190
8.1.4 目录信息类DirectoryInfo 191
8.2 文件操作 192
8.2.1 文件编码 192
8.2.2 文件流类FileStream 193
8.2.3 流写入类StreamWriter 195
8.2.4 流读取类StreamReader 197
8.2.5 二进制流写入类BinaryWriter 198
8.2.6 二进制流读取类BinaryReader 199
8.3 情境应用——案例拓展 200
8.3.1 案例:文件的加密 200
8.3.2 案例:C#源文件的编译预处理 203
自我测试练习 205
第9章 Windows窗体程序 206
9.1 MyCalculator程序 206
9.2 预备知识 207
9.2.1 创建Windows窗体应用程序 207
9.2.2 认识和使用窗体设计器 208
9.2.3 认识和使用属性面板 209
9.2.4 认识设计器生成的代码 211
9.2.5 分部类 212
9.3 MyCalculate程序的开发 213
9.3.1 创建程序项目 213
9.3.2 界面可视化设计 213
9.3.3 编写事件代码 215
9.3.4 程序运行测试 216
9.4 窗体与常用控件 217
9.4.1 Windows窗体的属性、事件和方法 217
9.4.2 控件中一些常用的属性和事件 218
9.4.3 常用控件简介 218
自我测试练习 220
第10章 菜单与工具栏设计 221
10.1 我的记事本 221
10.2 创建“我的记事本”程序 222
10.2.1 创建项目 222
10.2.2 设计窗体 223
10.3 菜单设计 224
10.3.1 添加主菜单 224
10.3.2 修改主菜单属性 225
10.3.3 为菜单项分配快捷键 226
10.3.4 处理主菜单事件 226
10.4 工具栏设计 227
10.4.1 创建项目资源 228
10.4.2 添加工具栏,导入资源 228
10.4.3 设计工具栏 229
10.4.4 工具栏事件处理 230
10.5 状态栏设计 231
10.5.1 状态栏界面设计 231
10.5.2 处理状态栏显示 232
10.6 剪贴板功能 233
自我测试练习 234
第11章 对话框及其应用 235
11.1 我的记事本(续) 235
11.1.1 问题描述 235
11.1.2 解决方案 235
11.2 标准对话框 236
11.2.1 标准对话框及使用方法 236
11.2.2 认识保存文件对话框(SaveFileDialog) 237
11.2.3 认识打开文件对话框(OpenFileDialog) 239
11.2.4 认识字体对话框(FontDialog) 240
11.2.5 颜色对话框(ColorDialog) 242
11.3 自定义对话框 242
11.3.1 创建自定义对话框 242
11.3.2 窗体间的数据交换 243
11.4 文件保存和加载 244
11.4.1 文件保存 244
11.4.2 文件打开 245
11.5 实现查找功能 246
11.5.1 创建“查找”对话框 246
11.5.2 设计“查找”对话框 247
11.5.3 修改MySearch类 247
11.5.4 实现查找功能 248
11.6 实现查找/替换功能 249
11.6.1 创建“查找/替换”对话框 249
11.6.2 修改Form2和Form1类 249
11.6.3 实现“查找/替换”功能 250
11.7 实现打印功能 251
11.7.1 认识PrintDocument控件 251
11.7.2 实现打印功能 253
11.7.3 实现页面设置功能 253
11.7.4 实现打印预览功能 254
11.7.5 运行测试 255
自我测试练习 255
第12章 数据库编程 256
12.1 学生信息管理系统 256
12.1.1 问题描述 256
12.1.2 解决方案 257
12.2 ADO.NET编程基础 257
12.2.1 ADO.NET简介 257
12.2.2 基本SQL语句 258
12.2.3 数据库连接 259
12.2.4 数据库的操作命令 260
12.3 创建数据库 263
12.3.1 建立Access数据库 264
12.3.2 创建SQL Server数据库 266
12.4 创建应用程序、访问数据库 267
12.4.1 数据库应用程序开发步骤 267
12.4.2 创建应用程序项目 268
12.4.3 连接并访问数据库 269
12.5 数据库记录的编辑 270
12.5.1 创建“添加记录”窗体 270
12.5.2 设计“添加记录”窗体 271
12.5.3 修改RecordAdd类 271
12.5.4 实现记录添加功能 273
12.5.5 程序运行与测试 274
12.6 数据库记录的查询 274
12.6.1 创建“记录查询”窗体 274
12.6.2 修改RecordINQ类,实现数据交换 275
12.6.3 实现记录查询功能 276
12.6.4 程序运行与测试 277
12.7 ListView控件 278
自我测试练习 279
参考文献 280