第1章 搭建C# 2012的开发框架 1
1.1 .NET Framework概述 1
1.1.1 .NET Framework组件 1
1.1.2 公共语言运行时 2
1.1.3 .NET Framework类库 4
1.2 C#语言概述 5
1.2.1 C#语言的特点 5
1.2.2 C# 5.0新增功能 5
1.2.3 C# 5.0修改功能 7
1.3 Visual Studio 2012开发工具 8
1.3.1 安装Visual Studio 2012 8
1.3.2 认识Visual Studio 2012 11
1.4 实验指导——创建C#控制台应用程序 15
1.5 引用命名空间 17
思考与练习 18
第2章 C#入门语法 20
2.1 C#语句 20
2.2 数据类型 22
2.2.1 常用数据类型 22
2.2.2 数据格式 25
2.3 变量与常量 27
2.3.1 变量的声明 27
2.3.2 变量的使用 28
2.3.3 常量 30
2.4 类型转换 31
2.4.1 隐式转换和显式转换 31
2.4.2 字符串类型转换 32
2.4.3 装箱和拆箱 33
2.5 运算符 34
2.5.1 常用运算符 35
2.5.2 运算符的使用 38
2.6 控制语句 39
2.6.1 选择语句 39
2.6.2 循环语句 42
2.6.3 跳转语句 44
2.6.4 语句嵌套 46
2.6.5 实验指导——日历输出 46
2.6.6 预处理指令 47
思考与练习 48
第3章 C#面向对象基础 50
3.1 类和对象 50
3.1.1 类 50
3.1.2 类的对象 51
3.2 类的函数 52
3.2.1 构造函数 52
3.2.2 析构函数 54
3.3 常见成员 55
3.3.1 字段 56
3.3.2 常量 57
3.3.3 属性 58
3.3.4 方法 59
3.4 三大特性 61
3.4.1 封装 61
3.4.2 继承 62
3.4.3 多态 64
3.5 常用的可选修饰符 65
3.5.1 base修饰符 65
3.5.2 sealed修饰符 66
3.5.3 abstract修饰符 68
3.5.4 static修饰符 69
3.5.5 实验指导——摄氏温度和华氏温度的转换 70
3.6 实验指导——模拟实现简单的计算器 72
思考与练习 75
第4章 C#面向对象的其他知识 77
4.1 结构 77
4.1.1 定义结构 77
4.1.2 结构成员 78
4.1.3 结构和类 80
4.2 枚举 80
4.2.1 定义枚举 81
4.2.2 使用枚举 82
4.2.3 Enum实现转换 83
4.3 接口 85
4.3.1 定义接口 85
4.3.2 接口和抽象类 86
4.3.3 接口成员 86
4.3.4 实验指导——在同一个类中实现多个接口 88
4.3.5 内置接口 90
4.4 实验指导——模拟实现会员登录 91
思考与练习 93
第5章 数组、集合和泛型 95
5.1 一维数组 95
5.1.1 一维数组概述 95
5.1.2 数组的应用 97
5.2 其他常用数组 100
5.2.1 二维数组 100
5.2.2 交错数组 102
5.2.3 静态数组 103
5.3 集合类 105
5.3.1 集合类概述 105
5.3.2 ArrayList类 106
5.3.3 Stack集合类 108
5.3.4 Queue集合类 109
5.3.5 BitArray集合类 110
5.3.6 SortedList集合类 111
5.3.7 Hashtable集合类 113
5.4 自定义集合类 114
5.4.1 自定义集合类概述 114
5.4.2 实验指导——家电信息管理 115
5.5 泛型 117
5.5.1 泛型概述 117
5.5.2 泛型类 118
5.5.3 泛型方法和参数 119
5.5.4 类型参数的约束 121
思考与练习 121
第6章 C#中常用的处理类 123
6.1 操作字符串 123
6.1.1 String类 123
6.1.2 String类操作字符串 125
6.1.3 StringBuilder类 131
6.1.4 StringBuilder类操作字符串 133
6.2 操作日期和时间 134
6.2.1 DateTime结构 135
6.2.2 TimeSpan结构 137
6.3 数学工具类 139
6.3.1 Math类 139
6.3.2 使用Random类 140
6.4 正则表达式 141
6.4.1 匹配规则 141
6.4.2 Regex类 142
6.5 实验指导——通过Thread类处理线程 144
思考与练习 146
第7章 委托和异常 147
7.1 委托 147
7.1.1 委托概述 147
7.1.2 声明委托 148
7.1.3 使用委托 148
7.1.4 匿名委托 150
7.1.5 Lambda表达式 151
7.1.6 多重委托 152
7.2 事件 153
7.2.1 事件概述 154
7.2.2 事件操作 154
7.3 实验指导——委托和事件的综合使用 156
7.4 异常 157
7.4.1 异常概述 158
7.4.2 try…catch…finally语句 158
7.4.3 常用异常类 159
7.4.4 throw关键字 162
7.4.5 自定义异常类 163
思考与练习 164
第8章 LINQ简单查询 166
8.1 LINQ简介 166
8.2 查询简单应用 168
8.2.1 认识LINQ查询 168
8.2.2 LINQ查询表达式 169
8.2.3 from子句 170
8.2.4 select子句 171
8.2.5 where子句 173
8.2.6 orderby子句 174
8.2.7 group子句 175
8.3 join子句 176
8.3.1 创建示例数据源 176
8.3.2 内联接 177
8.3.3 分组联接 178
8.3.4 左外联接 179
8.4 查询方法 181
8.4.1 认识查询方法 181
8.4.2 筛选数据 182
8.4.3 排序 183
8.4.4 分组 184
8.4.5 取消重复 184
8.4.6 聚合 185
8.4.7 联接 187
8.5 实验指导——LINQ查询的“延迟”问题 188
思考与练习 190
第9章 LINQ to SQL 192
9.1 认识LINQ对象关系设计器 192
9.2 DataContext类 194
9.3 实验指导——手动映射数据库 196
9.4 实验指导——操作数据 198
9.4.1 插入数据 199
9.4.2 更新数据 200
9.4.3 删除数据 201
9.5 多表查询 202
思考与练习 204
第10章 WPF基础入门 206
10.1 了解WPF 206
10.1.1 WPF的诞生 206
10.1.2 WPF的概念 208
10.1.3 WPF 4.5 新增功能 209
10.1.4 WPF与Silverlight的关系 210
10.1.5 学习WPF的必要性 211
10.2 WPF体系结构 212
10.2.1 了解WPF体系结构 212
10.2.2 类层次结构 213
10.3 实验指导——创建第一个WPF程序 215
10.4 认识XAML 220
10.4.1 XAML简介 220
10.4.2 XAML语法规则 220
10.4.3 XAML根元素 221
10.4.4 XAML命名空间 222
10.4.5 XAML后台文件 224
10.4.6 子元素 225
10.5 认识Application类 226
10.5.1 创建Application对象 226
10.5.2 创建自定义Application类 228
10.5.3 定义应用程序关闭模式 230
10.5.4 应用程序事件 231
10.5.5 处理命令行参数 232
10.5.6 处理子窗口 233
思考与练习 236
第11章 WPF控件布局 238
11.1 WPF布局 238
11.1.1 WPF布局原理 238
11.1.2 StackPanel布局 239
11.1.3 WrapPanel和DockPanel布局 240
11.1.4 Grid布局 243
11.1.5 Canvas布局 245
11.2 WPF控件简介 246
11.2.1 WPF控件概述 246
11.2.2 WPF控件类型 247
11.3 WPF内容控件 248
11.3.1 ContentControl类 248
11.3.2 HeaderedContentControl类 250
11.3.3 ItemsControl类 253
11.3.4 HeaderedItemsControl类 254
11.4 标准控件 254
11.4.1 文本输入控件 254
11.4.2 文本显示控件 255
11.4.3 外观控件 259
11.4.4 设置文本格式的类 260
11.5 实验指导——在C#中添加WPF控件 261
思考与练习 262
第12章 WPF的属性和事件 264
12.1 依赖项属性 264
12.1.1 依赖项属性概述 264
12.1.2 属性值继承特性 266
12.1.3 自定义依赖项属性 268
12.2 实验指导——定义和使用完整的依赖项属性 270
12.3 附加属性 273
12.3.1 附加属性概述 273
12.3.2 自定义附加属性 275
12.4 实验指导——定义和使用完整的附加属性 276
12.5 路由事件 278
12.5.1 路由事件概述 278
12.5.2 路由策略 279
12.5.3 自定义路由事件 281
12.6 附加事件 284
思考与练习 286
第13章 WPF图形和多媒体 288
13.1 WPF图形 288
13.1.1 WPF图形对象 288
13.1.2 形状拉伸 290
13.1.3 形状变换 292
13.2 画刷 296
13.2.1 纯色和渐变色 296
13.2.2 线性渐变 297
13.2.3 径向渐变 299
13.3 动画 301
13.3.1 动画概述 302
13.3.2 WPF属性动画 302
13.3.3 动画类型 303
13.3.4 对属性应用动画 306
13.4 图像 307
13.4.1 WPF图像处理 307
13.4.2 WPF图像格式 307
13.4.3 图像显示 309
13.5 多媒体 309
13.5.1 多媒体概述 309
13.5.2 MediaElement类 310
13.6 实验指导——自定义播放器 312
思考与练习 314
第14章 WPF数据绑定技术 316
14.1 数据绑定的概念 316
14.2 简单绑定 317
14.2.1 绑定到属性 318
14.2.2 绑定模式 319
14.2.3 使用代码实现绑定 320
14.2.4 绑定到多个属性 321
14.2.5 设置绑定更新模式 323
14.2.6 绑定不可见元素 324
14.3 实验指导——数据库绑定 328
14.3.1 创建数据访问代码 329
14.3.2 查看学生信息列表 330
14.3.3 查找学生信息 331
14.3.4 更新学生信息 333
思考与练习 334
第15章 WCF概述 336
15.1 了解WCF 336
15.1.1 WCF概念 336
15.1.2 WCF优势 337
15.2 WCF技术要素 338
15.2.1 组成元素 338
15.2.2 契约 340
15.2.3 服务 342
15.2.4 宿主程序 343
15.2.5 实现客户端 348
15.3 应用场景 349
15.4 实验指导——WCF实现购票系统的基本功能 350
思考与练习 355
第16章 WF框架 356
16.1 WF基础 356
16.1.1 工作流简介 356
16.1.2 数据模型 357
16.2 活动 358
16.2.1 程序流活动 359
16.2.2 流程图活动 359
16.2.3 状态机活动 360
16.2.4 消息传递活动 360
16.2.5 自定义活动 362
16.3 创建工作流 363
16.3.1 工作流类型 363
16.3.2 流程图工作流 364
16.3.3 程序工作流 366
16.3.4 状态机工作流 367
16.3.5 使用命令性代码创作工作流 369
16.4 实验指导——创建生成随机数的工作流 370
思考与练习 370
第17章 WPF制作文件资源管理器 372
17.1 资源管理器概述 372
17.2 数据库设计 373
17.3 准备工作 374
17.3.1 搭建框架 374
17.3.2 创建类 375
17.3.3 App.xaml文件 378
17.4 功能实现 382
17.4.1 前台界面 382
17.4.2 后台代码 387
17.5 功能测试 392
附录 思考与练习答案 395