第1篇 C#概述篇 2
第1章 C#入门基础 2
1.1 C#概述 2
1.1.1 C#语言 2
1.1.2 .NET框架 3
1.1.3 C#应用程序 5
1.2 搭建Visual Studio 2008开发环境 6
1.2.1 安装Microsoft Visual Studio 2008 6
1.2.2 配置集成开发环境(IDE) 7
1.2.3 熟悉集成开发环境 9
1.3 创建第一个控制台应用程序 11
1.3.1 创建Sample_01_CA控制台应用程序 11
1.3.2 解决方案资源管理器 12
1.3.3 Program.cs文件 12
1.3.4 AssemblyInfo.cs文件 13
1.3.5 运行应用程序 13
1.4 创建第一个Windows窗体应用程序 14
1.4.1 创建Sample_01_WFA Windows窗体应用程序 14
1.4.2 解决方案资源管理器 15
1.4.3 Forml.cs窗体 15
1.4.4 Forml.Designer.cs文件 15
1.4.5 Forml.cs窗体的代码 16
1.4.6 Program.cs文件 16
1.4.7 AssemblyInfo.cs文件 16
1.4.8 运行应用程序 16
1.5 上机实践 16
1.6 常见问题及解答 17
1.7 小结 18
1.8 习题 18
第2章 C#基本概念 19
2.1 创建Hello World应用程序 19
2.1.1 创建hello.txt文本文件 19
2.1.2 创建HelloWorld类 19
2.1.3 添加Main()方法 20
2.1.4 调用WriteLine()方法 21
2.1.5 引入System命名空间 22
2.1.6 整理Hello World应用程序的代码 22
2.2 编译和运行Hello World应用程序 23
2.3 C#程序的概念扩展 24
2.4 上机实践 24
2.5 小结 25
2.6 习题 25
第2篇 C#基础语法篇 28
第3章 类型 28
3.1 类型概述 28
3.2 值类型 29
3.2.1 System.ValueType类型 29
3.2.2 整数类型 30
3.2.3 浮点型 31
3.2.4 decimal类型 32
3.2.5 bool类型 32
3.2.6 枚举类型 32
3.2.7 结构类型 33
3.2.8 实例1:把整数转换为二进制数 34
3.2.9 实例2:把二进制数转换为整数 35
3.3 引用类型 36
3.3.1 对象类型 36
3.3.2 字符串类型 36
3.3.3 类类型 37
3.3.4 数组类型 37
3.3.5 接口类型 37
3.3.6 委托类型 38
3.4 装箱和拆箱 38
3.4.1 装箱 38
3.4.2 拆箱 39
3.5 上机实践 39
3.6 常见问题及解答 40
3.7 小结 40
3.8 习题 41
第4章 变量 42
4.1 变量概述 42
4.2 变量分类 43
4.2.1 静态变量 43
4.2.2 实例变量 44
4.2.3 局部变量 45
4.2.4 值参数 46
4.2.5 引用参数 46
4.2.6 输出参数 47
4.2.7 数组元素 48
4.3 变量赋值 48
4.4 实例1:使用值参数传递数据 49
4.5 实例2:使用ref参数传递数据 50
4.6 实例3:使用out参数返回数据 51
4.7 变量转换 52
4.7.1 隐式转换 52
4.7.2 显式转换 53
4.8 上机实践 54
4.9 常见问题及解答 54
4.10 小结 55
4.11 习题 55
第5章 表达式和运算符 56
5.1 表达式 56
5.1.1 表达式分类 56
5.1.2 this关键字 57
5.1.3 base关键字 58
5.1.4 new关键字 58
5.2 运算符 60
5.2.1 运算符优先级 60
5.2.2 一元运算符 61
5.2.3 算术运算符 63
5.2.4 逻辑运算符 63
5.2.5 条件运算符 64
5.2.6 条件逻辑运算符 65
5.2.7 移位运算符 65
5.2.8 关系和类型测试运算符 66
5.2.9 赋值运算符 67
5.3 实例1:使用checked和unchecked运算符检查运算 67
5.4 实例2:复数运算符重载 68
5.5 上机实践 70
5.6 常见问题及解答 71
5.7 小结 71
5.8 习题 71
第6章 语句 72
6.1 语句概述 72
6.2 基本语句 73
6.2.1 空语句 73
6.2.2 标记语句 73
6.2.3 表达式语句 74
6.2.4 声明语句 74
6.2.5 块 75
6.3 跳转语句 75
6.3.1 break语句 75
6.3.2 continue语句 76
6.3.3 return语句 76
6.3.4 throw语句 77
6.4 选择语句 78
6.4.1 if语句 78
6.4.2 switch语句 79
6.5 迭代语句 81
6.5.1 for语句 81
6.5.2 foreach语句 82
6.5.3 while语句 83
6.5.4 do语句 84
6.6 其他语句 85
6.6.1 try语句 85
6.6.2 using语句 86
6.6.3 lock语句 87
6.6.4 checked和unchecked语句 88
6.7 实例:判断闰年 88
6.8 上机实践 89
6.9 常见问题及解答 90
6.10 小结 90
6.11 习题 90
第7章 命名空间 92
7.1 命名空间概述 92
7.2 声明命名空间 92
7.3 .(点号)运算符 94
7.4 ::(双冒号)运算符 95
7.5 using指令 95
7.5.1 创建命名空间或类型别名 95
7.5.2 导入命名空间 96
7.6 .NET Framework常用命名空间 96
7.7 上机实践 97
7.8 常见问题及解答 98
7.9 小结 98
7.10 习题 99
第3篇 C#面向对象编程篇 102
第8章 类 102
8.1 类概述 102
8.1.1 类声明 102
8.1.2 类修饰符 102
8.1.3 类继承 103
8.1.4 类、对象和实例化 104
8.2 类成员 104
8.2.1 常量 105
8.2.2 字段 106
8.2.3 方法 107
8.2.4 属性 111
8.2.5 索引器 112
8.2.6 构造函数 114
8.2.7 析构函数 117
8.2.8 事件 117
8.3 实例:使用类的继承特性 118
8.3.1 设计Person类 119
8.3.2 设计Teacher类 121
8.3.3 设计Student类 122
8.3.4 测试Person、Teacher和Student类 123
8.4 上机实践 124
8.5 常见问题及解答 125
8.6 小结 125
8.7 习题 125
第9章 结构 127
9.1 结构概述 127
9.2 结构成员 128
9.3 结构和类的区别 128
9.3.1 继承 129
9.3.2 this保留字 129
9.3.3 构造函数 130
9.4 实例1:创建坐标点结构Point 130
9.4.1 设计Point结构 130
9.4.2 测试Point结构 131
9.5 实例2:创建复数结构Complex 132
9.5.1 设计Complex结构 132
9.5.2 测试Complex结构 133
9.6 上机实践 134
9.7 常见问题及解答 135
9.8 小结 135
9.9 习题 135
第10章 数组 136
10.1 数组概述 136
10.1.1 数组的维度数 136
10.1.2 声明数组 137
10.1.3 实例化数组 137
10.1.4 初始化数组 137
10.1.5 遍历数组 138
10.2 数组分类 139
10.2.1 一维数组 139
10.2.2 二维数组 140
10.2.3 多维数组 140
10.2.4 交错数组 141
10.3 静态数组System.Array 142
10.3.1 属性 142
10.3.2 方法 143
10.3.3 获取数组长度 144
10.3.4 获取元素的值 145
10.3.5 设置元素的值 145
10.3.6 获取元素的索引 145
10.3.7 排序数组 145
10.3.8 反转数组 146
10.4 动态数组System.ArrayList 146
10.4.1 属性 147
10.4.2 方法 147
10.4.3 添加元素 148
10.4.4 移除元素 148
10.5 实例:抽签程序 149
10.6 上机实践 150
10.7 常见问题及解答 150
10.8 小结 151
10.9 习题 151
第11章 接口 152
11.1 接口概述 152
11.1.1 接口声明 152
11.1.2 接口修饰符 152
11.1.3 接口继承 153
11.2 接口成员 153
11.2.1 属性 154
11.2.2 索引器 154
11.2.3 方法 154
11.2.4 事件 155
11.3 实现接口 155
11.3.1 实现属性 156
11.3.2 实现索引器 156
11.3.3 实现方法 157
11.3.4 实现事件 157
11.4 抽象类和接口 157
11.5 实例:设计算术计算接口 158
11.6 上机实践 160
11.7 常见问题及解答 161
11.8 小结 162
11.9 习题 162
第12章 委托和事件 163
12.1 委托 163
12.1.1 委托声明 163
12.1.2 创建向委托注册方法 164
12.1.3 委托实例化 165
12.1.4 委托的方法列表 165
12.1.5 委托调用 166
12.2 事件 167
12.2.1 声明事件 167
12.2.2 注册事件 168
12.2.3 移除事件 168
12.2.4 调用事件 168
12.3 实例:测试打印事件 168
12.4 上机实践 170
12.5 常见问题及解答 171
12.6 小结 172
12.7 习题 172
第13章 异常处理 173
13.1 异常概述 173
13.1.1 导致异常的原因 173
13.1.2 try语句 173
13.1.3 异常处理 175
13.2 System.Exception类 175
13.3 常用异常类 176
13.4 实例:自定义异常处理类 177
13.4.1 设计CustomException类 177
13.4.2 使用CustomException类处理异常 178
13.5 上机实践 179
13.6 常见问题及解答 180
13.7 小结 181
13.8 习题 181
第4篇 C#语法扩展篇 184
第14章 泛型 184
14.1 泛型概述 184
14.1.1 泛型类声明 184
14.1.2 类型形参 185
14.1.3 类型形参的约束 185
14.1.4 泛型类的成员 186
14.1.5 泛型类的静态字段 187
14.2 泛型方法 187
14.2.1 声明泛型方法 188
14.2.2 调用泛型方法 188
14.2.3 通过委托调用泛型方法 189
14.2.4 虚泛型方法 189
14.3 实例1:实现泛型列表 190
14.3.1 设计泛型列表类GenericList<T> 190
14.3.2 测试泛型列表 192
14.4 实例2:实现泛型堆栈 192
14.4.1 设计泛型堆栈类GenericStack<T> 193
14.4.2 测试泛型堆栈 194
14.5 上机实践 195
14.6 常见问题及解答 195
14.7 小结 196
14.8 习题 196
第15章 分部类型和可空类型 197
15.1 分部类型 197
15.1.1 声明分部类 197
15.1.2 声明分部结构 198
15.1.3 声明分部接口 198
15.1.4 同名成员处理 199
15.1.5 处理基接口 200
15.2 可空类型 200
15.2.1 HasValue和Value属性 201
15.2.2 GetValueOrDefault()方法 202
15.2.3 bool?类型 202
15.3 实例:测试可空类型 203
15.4 上机实践 204
15.5 常见问题及解答 205
15.6 小结 205
15.7 习题 205
第16章 隐型变量、初始化器、匿名类型和隐型数组 206
16.1 隐型局部变量 206
16.1.1 声明隐型局部变量 206
16.1.2 使用隐型局部变量 207
16.2 对象初始化器 209
16.3 集合初始化器 210
16.4 匿名类型 211
16.5 隐型数组 212
16.6 实例:在foreach语句中使用隐型局部变量 213
16.7 上机实践 214
16.8 常见问题及解答 215
16.9 小结 215
16.10 习题 215
第17章 迭代器、匿名方法和扩展方法 216
17.1 迭代器 216
17.1.1 创建非泛型迭代器 216
17.1.2 创建泛型迭代器 217
17.1.3 IEnumerator和IEnumerator〈T〉接口 218
17.2 匿名方法 219
17.2.1 创建匿名方法 219
17.2.2 将匿名方法作为参数传递 220
17.3 扩展方法 221
17.3.1 声明扩展方法 221
17.3.2 导入扩展方法 222
17.3.3 调用扩展方法 222
17.4 实例:扩展string类型的方法 223
17.5 上机实践 223
17.6 常见问题及解答 224
17.7 小结 224
17.8 习题 225
第18章 Lambda表达式和查询表达式 226
18.1 Lambda表达式 226
18.1.1 输入参数 227
18.1.2 表达式或语句块 227
18.2 查询表达式 228
18.2.1 from子句 228
18.2.2 select子句 230
18.2.3 where子句 231
18.2.4 let子句 232
18.2.5 orderby子句 232
18.2.6 group子句 233
18.2.7 into子句 234
18.2.8 join子句 234
18.3 实例:使用Lambda表达式查询XML 237
18.4 上机实践 238
18.5 常见问题及解答 239
18.6 小结 240
18.7 习题 240
第5篇 应用篇 242
第19章 字符串处理 242
19.1 String和StringBuilder类 242
19.1.1 String类 242
19.1.2 StringBuilder类 243
19.2 不变字符串处理 244
19.2.1 插入字符串 244
19.2.2 移除字符串 245
19.2.3 替换字符串 245
19.2.4 联接字符串 246
19.2.5 分隔字符串 247
19.2.6 填充字符串 247
19.2.7 查找字符串 248
19.2.8 获取子串 248
19.2.9 格式化字符串 249
19.3 可变字符串处理 250
19.3.1 插入字符串 251
19.3.2 追加字符串 251
19.3.3 移除字符串 251
19.3.4 替换字符串 252
19.3.5 复制字符串 252
19.4 实例:词频统计 253
19.5 上机实践 257
19.6 常见问题及解答 257
19.7 小结 257
19.8 习题 258
第20章 日期和时间处理 259
20.1 DateTime结构 259
20.1.1 字段 259
20.1.2 属性 260
20.1.3 方法 261
20.2 TimeSpan结构 263
20.2.1 字段 263
20.2.2 属性 263
20.2.3 方法 264
20.3 日期和时间的常用操作 265
20.3.1 格式化 265
20.3.2 计算时间差 266
20.3.3 追加时间 267
20.4 实例:计算for循环的运算时间 267
20.5 上机实践 268
20.6 常见问题及解答 269
20.7 小结 269
20.8 习题 269
第21章 I/O流、目录和文件处理 270
21.1 I/O流 270
21.1.1 文件流 271
21.1.2 内存流 272
21.2 目录处理 274
21.2.1 Directory类 274
21.2.2 DirectoryInfo类 275
21.2.3 创建目录 276
21.2.4 删除目录 277
21.2.5 移动目录 277
21.2.6 遍历目录 278
21.3 文件处理 278
21.3.1 File类 278
21.3.2 FileInfo类 279
21.3.3 创建文件 280
21.3.4 写入文件 280
21.3.5 读取文件 281
21.3.6 移动文件 281
21.3.7 删除文件 282
21.4 实例:读取目录下指定类型的文件的内容 282
21.5 上机实践 285
21.6 常见问题及解答 285
21.7 小结 286
21.8 习题 286
第22章 Windows窗体编程 287
22.1 Windows窗体应用程序概述 287
22.1.1 创建Sample_22 Windows窗体应用程序 287
22.1.2 应用程序起始点 288
22.1.3 配置程序集信息 289
22.2 基本控件 290
22.2.1 标签控件 290
22.2.2 图片框控件 290
22.2.3 文本框和富文本框 291
22.2.4 按钮控件 291
22.2.5 单项按钮和复选框 292
22.3 MainForm.cs窗体设计 292
22.3.1 配置窗体属性 292
22.3.2 添加控件 292
22.3.3 创建等待对话框 293
22.3.4 添加窗体事件 294
22.4 菜单和工具栏 295
22.4.1 菜单 295
22.4.2 工具栏 296
22.4.3 上下文菜单 297
22.5 容器 298
22.5.1 面板 298
22.5.2 组合框 299
22.5.3 TabControl控件 299
22.5.4 容器窗体 300
22.6 对话框 302
22.6.1 对话框窗体 302
22.6.2 颜色对话框 303
22.6.3 字体对话框 304
22.6.4 打开文件对话框 305
22.6.5 保存文件对话框 306
22.6.6 目录浏览对话框 307
22.7 数据网格视图控件 308
22.8 运行应用程序 309
22.9 上机实践 310
22.10 常见问题及解答 310
22.11 小结 311
22.12 习题 311
第23章 使用GDI+绘图 312
23.1 GDI+概述 312
23.1.1 Graphics类 312
23.1.2 点和区域 315
23.1.3 颜色 317
23.1.4 刷 318
23.1.5 画笔 318
23.1.6 字体 319
23.2 实例:使用GDI+绘制线条、形状和文本 320
23.2.1 创建Sample_23窗体应用程序 320
23.2.2 Paint事件 321
23.2.3 绘制直线 321
23.2.4 绘制折线 322
23.2.5 绘制曲线 323
23.2.6 绘制虚线 324
23.2.7 绘制矩形 326
23.2.8 绘制三角形 327
23.2.9 绘制多边形 327
23.2.10 绘制椭圆 328
23.2.11 绘制饼状图 329
23.2.12 绘制文本 331
23.3 上机实践 332
23.4 常见问题及解答 333
23.5 小结 333
23.6 习题 333
第24章 .NET数据访问 335
24.1 ADO.NET概述 335
24.1.1 ADO.NET组成结构 335
24.1.2 ADO.NET基本对象 336
24.2 实例:操作SQL Server数据库 341
24.2.1 创建Sample_24窗体应用程序 341
24.2.2 创建CSharp3DB数据库 342
24.2.3 连接数据库 343
24.2.4 读取数据 344
24.2.5 插入数据 345
24.2.6 修改数据 347
24.2.7 删除数据 348
24.2.8 使用DataGridView控件显示数据 349
24.2.9 使用ListView控件显示数据 350
24.2.10 使用TreeView控件显示数据 352
24.3 上机实践 353
24.4 常见问题及解答 354
24.5 小结 354
24.6 习题 354
第6篇 实践篇 356
第25章 图书管理系统 356
25.1 系统总体设计 356
25.1.1 系统功能设计 356
25.1.2 图书管理系统组成 357
25.1.3 数据库设计 358
25.1.4 数据库实体类设计 360
25.1.5 应用程序主入口 360
25.1.6 应用程序全局变量 361
25.2 管理员模块实现 361
25.2.1 管理员登录 361
25.2.2 主窗口 363
25.2.3 分类管理 370
25.2.4 书籍管理 376
25.2.5 借阅书籍 380
25.2.6 查看借阅人 385
25.3 学生和老师功能模块实现 387
25.3.1 学生或老师登录 387
25.3.2 主窗口 387
25.3.3 归还书籍 391
25.3.4 查看书籍信息 393
25.3.5 浏览书籍 395
25.3.6 借阅书籍 399
25.4 上机实践 399
25.5 常见问题及解答 399
25.6 小结 400
25.7 习题 400
第26章 P2P聊天工具 401
26.1 系统总体设计 401
26.1.1 系统功能设计 401
26.1.2 P2P聊天工具组成 401
26.2 P2P聊天工具类库实现 402
26.2.1 Tool类 402
26.2.2 P2P类 403
26.3 P2P聊天工具服务器聊天窗口 406
26.4 P2P聊天工具客户端聊天窗口 409
26.5 上机实践 409
26.6 小结 409
26.7 习题 409
第27章 我的校内网 410
27.1 系统总体设计 410
27.1.1 系统功能设计 410
27.1.2 校内网组成 410
27.1.3 数据库设计 411
27.1.4 数据库实体类设计 413
27.1.5 标题模块 413
27.1.6 配置文件Web.config 414
27.2 常用功能模块实现 414
27.2.1 登录页面 415
27.2.2 主页面 416
27.2.3 我的好友 417
27.2.4 添加好友 420
27.2.5 我的相册 423
27.2.6 上传照片 426
27.2.7 我的日志 429
27.2.8 添加日志 432
27.3 常见问题及解答 434
27.4 小结 434
27.5 习题 435