第一篇语言 1
第1章C#简介、数据类型和语句 1
1.1 C#程序简介 2
1.2数据类型 5
1.2.1值类型和引用类型 5
1.2.2装箱和拆箱 8
1.2.3数组 9
1.2.4 string类型 13
1.2.5数据格式化显示 16
1.2.6可空类型 20
1.3语句 21
1.3.1常用语句 22
1.3.2异常处理语句 23
1.3.3 using语句 25
1.4运算符 26
1.4.1运算符类别 26
1.4.2运算符重载 28
1.4.3数据转换和转换运算符 29
1.5关键字 32
第2章类、命名空间 35
2.1类 35
2.1.1声明类 35
2.1.2字段和方法成员 37
2.1.3 ref和out参数 38
2.1.4静态类和静态成员 39
2.1.5继承 41
2.1.6成员重载 44
2.1.7构造函数 46
2.1.8析构函数 51
2.1.9嵌套类型 53
2.1.10分部类定义 54
2.2结构 57
2.3命名空间 59
2.3.1NET Framework 59
2.3.2使用命名空间 61
2.3.3使用Visual Basic的My命名空间 63
第3章 属性、索引器、委托、事件和接口 65
3.1属性 65
3.1.1使用属性 66
3.1.2 get和set访问器 67
3.1.3非对称访问器可访问性 70
3.2索引器 72
3.2.1用参数进行索引 73
3.2.2索引器示例 75
3.3委托 76
3.3.1将方法作为参数传递给委托 76
3.3.2方法与委托相关联 78
3.4事件 81
3.4.1事件处理程序 82
3.4.2创建响应事件的控件 84
3.5接口 86
3.5.1接口成员和显示接口实现 87
3.5.2接口中的属性、索引器和事件 91
第4章 泛型与迭代器 96
4.1泛型 96
4.1.1泛型简介 96
4.1.2List<T>泛型类 97
4.1.3泛型类型参数 99
4.1.4自定义泛型 102
4.1.5泛型使用 104
4.2迭代器 108
4.2.1 GetEnumerator迭代器 108
4.2.2命名迭代器 110
4.2.3为列表创建迭代器块 110
第5章 语言集成查询 113
5.1查询表达式 114
5.1.1查询表达式基础 114
5.1.2查询句法和方法句法 116
5.2关键字 118
5.2.1 var关键字 118
5.2.2 from子句 120
5.2.3 group子句 122
5.2.4 into、join、let子句 125
5.2.5 orderby、select、where子句 126
5.3查询应用 128
5.3.1从多路源合并对象集 128
5.3.2查询对象序列 131
5.3.3在查询式中处理null值 132
5.4分组 133
5.4.1用不同方式对结果分组 133
5.4.2嵌套组 134
5.4.3执行分组操作的子查询 135
5.5方法应用 135
5.5.1运行时动态指定筛选 135
5.5.2在内存中存储查询结果 136
5.5.3从方法返回查询 139
5.6联接 140
5.6.1不相等联接 140
5.6.2用复合关键字联接 142
5.6.3对join子句的结果排序 143
5.6.4实行内部联接 145
5.6.5实行分组联接 146
5.6.6实行左外部联接 147
5.7 lambda表达式 148
5.7.1=>操作符 148
5.7.2 lambda中的类型推断 151
第6章 类库DLL、不安全代码和XML文档 153
6.1创建和使用动态链接库 153
6.2不安全的代码和指针 155
6.3 XML文档 158
6.3.1程序的XML文档注释 158
6.3.2 LINQ to XML数据绑定 160
第二篇Windows应用程序 167
第7章Windows Form应用程序 167
7.1 Windows Form应用程序分析 167
7.1.1创建简单的Form窗体 167
7.1.2 Windows Form应用程序分析 168
7.2.Windows Form应用程序示例 174
7.2.1添加窗体 174
7.2.2多文档界面应用程序 175
7.2.3 MDI子窗体运行示例 176
7.2.4窗体和控件的拖放操作 178
7.2.5数据的剪贴板操作 183
7.2.6 Windows窗体可视化继承 184
7.3 Windows Form窗体控件 187
7.3.1 Windows Form窗体控件分类 187
7.3.2控件类示例 190
7.4用户控件 200
7.4.1复合控件 201
7.4.2继承Windows窗体控件 207
第8章WPF应用程序 209
8.1 WPF程序示例 209
8.1.1 Hello World程序 209
8.1.2简单的手写板应用程序 210
8.1.3设置消息框式样 211
8.1.4加载图像 214
8.2 WPF控件 215
8.2.1控件应用示例 215
8.2.2 WPF用户控件 216
8.3 WPF数据绑定 219
8.4三维图形 222
8.4.1三维图形的概念 222
8.4.2三维对象添加事件 227
8.5 WPF动画系统 230
8.5.1逐渐消失和恢复 231
8.5.2动画的样条内插 232
8.5.3旋转的三维图形 233
第9章 图形编程 242
9.1创建图形对象的方法 242
9.1.1 Paint事件创建图形对象 242
9.1.2 CreateGraphics方法创建图形对象 244
9.2绘制图形 245
9.2.1 Pen类 245
9.2.2 Brush类 247
9.2.3 Graphics绘制图形的方法 249
9.3用GDI+显示图像 251
9.3.1 Image类 251
9.3.2 Graphics类 252
9.3.3 TextureBrush类 254
9.4图像、位图和图元文件 256
9.4.1位图类型 256
9.4.2 GDI+中的元文件 258
9.4.3在GDI+中绘制、定位和复制图像 259
9.4.4旋转、映射和扭曲图像 261
9.4.5读取图像元数据 261
9.5 WPF图形程序 263
9.5.1水印 263
9.5.2图形的裁剪和移动 264
9.5.3演示图板的动画显示 267
第10章 文件、流和序列化 278
10.1基本的文件I/O 278
10.1.1 Stream类 278
10.1.2 File类 279
10.1.3 FileInfo类 280
10.2驱动器、文件夹和文件 282
10.2.1驱动器查询 282
10.2.2文件夹的创建、删除、移动和查询 283
10.2.3文件的创建、删除、移动和查找 286
10.3向文件读写文本和数据 288
10.3.1向文件写入文本 288
10.3.2从文件读取文本 289
10.3.3对新建的数据文件进行读取和写入 290
10.3.4打开并追加日志文件 290
10.4文件压缩 291
10.5序列化 295
10.5.1对象序列化和反序列化 295
10.5.2 XML序列化 298
10.5.3二进制序列化 300
第11章 托管线程处理 303
11.1托管线程与线程处理 303
11.1.1应用程序域 303
11.1.2使用线程和线程处理 305
11.2多线程 308
11.2.1多线程处理同步数据 308
11.2.2前台和后台线程 313
11.2.3多线程组件 314
第12章Windows程序应用:曲线绘制与插值 320
12.1绘制曲线 320
12.2插值 323
第三篇 数据库编程 329
第13章 用窗体设计器编写数据库程序示例 329
13.1 SQL Server简介 329
13.1.1下载安装数据库 329
13.1.2用Visual Studio建立数据库脚本项目 330
13.2在窗体上显示数据 331
13.2.1用DataGridView控件显示数据 331
13.2.2多控件分别显示各列数据 333
13.2.3添加查询 334
13.3在窗体上显示有关联的表 334
13.3.1用DataGridView显示两个有关联的表 334
13.3.2创建查找表 335
13.4在不同窗体间传递数据 336
13.5创建数据绑定的用户控件 338
13.6数据库管理程序示例 341
13.6.1 Employees管理程序 341
13.6.2创建图片数据库管理程序 342
第14章ADO.NET概述、数据的连接和检索 344
14.1 SQL Server.NET Framework数据提供程序的核心对象 344
14.1.1 SqlConnection类,连接字符串和配置文件 345
14.1.2 SqlCommand命令 349
14.1.3 SqlDataReader检索数据 351
14.2绑定数据类 353
14.2.1 DataGridView类 353
14.2.2 BindingSource类 355
14.2.3 BindingNavigator类 357
第15章DataSet和Sq IDataAdapter 358
15.1 DataSet 358
15.1.1 DataSet和DataTable 358
15.1.2添加和浏览表间关系 361
15.1.3合并、复制DataSet 362
15.1.4使用类型化的DataSet 363
15.1.5从XML中加载DataSet 366
15.2 SqlDataAdapter 368
15.2.1使用SqlDataAdapter填充DataSet 368
15.2.2使用SqlDataAdapter更新数据源 370
15.2.3将参数用于SqlDataAdapter 372
15.2.4分析窗体设计器自动生成的代码 374
15.2.5检索“标识”或“自动编号”值 378
15.2.6设置DataTable和DataColumn映射 379
15.2.7使用SqlDataAdapter执行批处理操作 380
第16章 图形和FILESTREAM数据 383
16.1图形和大值数据 383
16.1.1在ADO.NET中检索图形和大型值 383
16.1.2分批获取二进制大对象的值 388
16.1.3将图像数据写入数据源 390
16.2 FILESTREAM数据 391
16.2.1创建FILESTREAM数据库 391
16.2.2 FILESTREAM数据读写和追加 395
16.2.3读写FILESTREAM图文混合数据 398
第17章LINQ to DataSet 401
17.1加载数据到DataSet 401
17.2 LINQ to DataSet查询编程 403
17.2.1 LINQ to DataSet中的查询 403
17.2.2查询DataSet和类型化DataSet 405
17.2.3比较DataRows 407
17.2.4从查询产生数据表 408
17.2.5泛型Field和SetField方法 409
17.3 DataView数据绑定的筛选排序 410
17.3.1查询和表产生DataView 410
17.3.2 DataView筛选 413
17.3.3 DataView排序 414
17.3.4 DataView搜索 415
17.4 LINQ to DataSet查询表达式 417
17.4.1 select、where和OrderBy查询筛选排序 417
17.4.2 Skip、Take、First和ElementAt选取 419
17.4.3 Average、Max和Sum聚合 420
17.4.4 Join、GroupJoin联接 421
17.5 LINQ to DataSet基于方法的句法 422
第18章LINQ to SQL 427
18.1对象关系设计器 427
18.1.1 O/R设计器用于数据库程序 427
18.1.2产生存储过程,重载实体类的更新 430
18.1.3添加有效性到实体类 433
18.2生成DataContext类和实体类 434
18.2.1数据库的对象模型映射 435
18.2.2代码编写映射模型 438
18.2.3代码生成工具SqlMetal生成DataContext类 440
18.2.4 O/R设计器产生DataContext类 442
18.3查询数据库 443
18.3.1查询示例 444
18.3.2聚合查询 446
18.3.3序列 448
18.3.4联接和分组 453
18.4更新数据库 455
18.4.1 DataContext的执行命令 455
18.4.2更新、插入和删除 456
18.5 LINQ to SQL应用 458
18.5.1用于可提升事务 458
18.5.2 LINQ to SQL数据绑定控件 459
18.5.3查询改动列名,本地方法调用 461
18.6存储过程和用户定义函数 462
18.6.1存储过程查询 462
18.6.2用户定义函数 465
参考文献 469