第1篇C#语言简介与开发环境 2
第1章c#简介 2
1.1发展历程 2
1.1.1起源 2
1.1.2 C# 2.0 2
1.1.3 C# 3.0 4
1.1.4 C# 3.5 4
1.1.5未来展望 5
1.2与其他语言的对比 6
1.2.1 C#与Java的对比 6
1.2.2 C#与C++++的对比 7
1.3技术优势 8
1.3.1 C#的主要功能 8
1.3.2 C#的主要特点 9
1.4 C#语言和.NET Framework的关系 10
1.5本章小结 11
第2章Visual Studio 2008 IDE简介 14
2.1安装Visual Studio 2008 14
2.2 Visual Studio 2008概览 18
2.2.1 Visual Studio 2008常用功能窗口介绍 18
2.2.2配置设置 23
2.2.3类设计器 26
2.2.4帮助系统 27
2.3用Visual Studio 2008 IDE开发应用程序 30
2.3.1控制台应用程序 30
2.3.2 Windows窗体应用程序 31
2.4调试应用程序 33
2.4.1程序错误类型 33
2.4.2调试程序 34
2.5本章小结 35
第2篇C#语言程序设计基础 38
第3章C#基础元素 38
3.1基础语法 38
3.1.1 C#程序结构 38
3.1.2 C#程序入口 40
3.1.3程序区块 41
3.1.4 C#程序的注释方法 41
3.1.5命名空间 42
3.2标识符 45
3.3关键字 46
3.4变量 46
3.4.1变量的命名 47
3.4.2数据类型 47
3.4.3变量的声明 50
3.5常量 51
3.6操作符与表达式 53
3.6.1操作符 53
3.6.2算术表达式 54
3.6.3赋值表达式 56
3.7类型转换 57
3.8本章小结 60
第4章 类与对象 61
4.1面向对象编程技术 61
4.1.1面向对象编程基础 61
4.1.2类与对象的关系及特点 62
4.1.3类与对象的形式 63
4.2 C#中类的定义和使用 63
4.3类成员 65
4.4构造函数和析构函数 69
4.4.1构造函数 69
4.4.2析构函数 71
4.4.3 this访问 72
4.5引用类型和值类型 73
4.6 System.Object 76
4.6.1装箱 76
4.6.2拆箱 77
4.7 Visual Studio 2008中的00P工具 77
4.7.1添加类 77
4.7.2类视图 78
4.7.3对象浏览器 79
4.8类库 79
4.9本章小结 80
第5章 方法 82
5.1方法的定义与调用 82
5.1.1方法的定义 82
5.1.2方法的调用 84
5.1.3方法的返回类型 86
5.2虚拟方法 87
5.3参数 88
5.4方法重载 92
5.5 Lambda表达式 94
5.5.1 Lambda表达式的定义 94
5.5.2 Lambda语句 95
5.5.3 Lambda表达式中的变量范围 95
5.6扩展方法 96
5.7本章小结 98
第6章 异常处理 100
6.1异常简介 100
6.2异常助手 101
6.3 Exception类 103
6.4异常处理方法 105
6.4.1引发异常 105
6.4.2捕捉异常 108
6.5本章小结 111
第7章 枚举与结构 113
7.1枚举 113
7.1.1什么是枚举 113
7.1.2枚举的定义 113
7.1.3枚举的使用 116
7.2结构 118
7.2.1结构的声明 119
7.2.2在结构中定义方法 120
7.2.3结构的使用 123
7.2.4类与结构的区别 124
7.3本章小结 125
第3篇C#语言关键技术 130
第8章 面向对象进阶 130
8.1静态成员和实例成员 130
8.2常数和字段 131
8.3类继承 133
8.4抽象类和密封类 138
8.5接口 140
8.5.1接口和类的区别 141
8.5.2接口和类的选择使用 141
8.5.3定义接口 142
8.5.4接口成员 145
8.5.5接口成员的全权名 148
8.6接口的实现 148
8.6.1接口实现举例 150
8.6.2显式接口成员实现 156
8.6.3接口映射 160
8.6.4接口的重实现 165
8.6.5接口实现的继承机制 168
8.7接口的组合 170
8.8接口的查询 171
8.8.1使用is运算符实现查询 171
8.8.2使用as运算符实现查询 172
8.9本章小结 174
第9章 属性 176
9.1属性的定义 176
9.2属性的使用 177
9.3静态属性和实例属性 184
9.4 Attribute类 186
9.4.1 Attribute类的定义 187
9.4.2 Attribute类的使用 188
9.4.3 Attribute类的查询 193
9.5索引器 198
9.6本章小结 202
第10章 迭代器与分部类 204
10.1迭代器 204
10.2分部类 207
10.3本章小结 210
第11章 泛型 212
11.1泛型简介 212
11.1.1泛型问题简述 212
11.1.2泛型概述 215
11.1.3泛型的优点 219
11.1.4泛型实例:让程序说多种语言 221
11.2泛型的使用 222
11.2.1泛型的限制 222
11.2.2泛型接口 227
11.2.3泛型方法 232
11.2.4泛型方法重载 235
11.2.5泛型类的继承 237
11.3 .NET中泛型的应用 238
11.3.1 .NET典型泛型类:List〈T〉 239
11.3.2泛型结构 242
11.4本章小结 244
第12章 委托 246
12.1 C#中的委托 246
12.2委托与接口 247
12.3委托示例 248
12.3.1委托声明 248
12.3.2委托实例化 250
12.3.3委托调用 253
12.4多路委托 253
12.4.1怎样组合多路广播委托 254
12.4.2多路广播委托示例 254
12.5本章小结 256
第13章 事件 258
13.1事件简介 258
13.1.1什么是事件 258
13.1.2事件的特点 259
13.1.3事件处理程序的一般步骤 259
13.1.4如何声明事件 260
13.1.5如何引发事件 260
13.1.6如何订阅事件 261
13.1.7是否所有委托都可以应用到事件中 262
13.1.8发布符合.NET Framework准则的事件 262
13.2事件示例 263
13.2.1简单事件声明示例 263
13.2.2事件封装示例 264
13.3 GUI事件 266
13.3.1事件机制剖析之鼠标单击事件 266
13.3.2事件机制剖析之KeyPress事件 269
13.3.3常用事件之鼠标按下、释放和拖动事件 270
13.3.4常用事件之键盘按下和释放事件 272
13.3.5常用事件之焦点事件 273
13.4本章小结 274
第4篇Windows窗体程序设计 278
第14章Windows窗体应用程序 278
14.1控件 278
14.1.1控件的通用属性 278
14.1.2窗体 279
14.1.3控件的创建 283
14.1.4控件的事件 284
14.2 Button控件 284
14.3 Label和LinkLabel控件 286
14.4 TextBox控件 288
14.5 RichTextBox控件 290
14.6 RadioButton和CheckBox控件 292
14.7 ListBox和ComboBox控件 295
14.8 ListView控件 299
14.9 TreeView控件 304
14.10自定义控件 310
14.10.1自定义控件概述 310
14.10.2创建用户控件 311
14.11本章小结 314
第15章 菜单与工具栏设计 316
15.1菜单栏 316
15.1.1菜单控件的使用 317
15.1.2右键菜单 318
15.1.3弹出菜单的创建 318
15.2工具栏的创建 320
15.3状态栏控件的使用 321
15.4常用控件 322
15.4.1滚动条控件 322
15.4.2滚动条控件的使用 322
15.4.3进程条控件 323
15.4.4进程条控件的使用 324
15.4.5跟踪条控件 325
15.4.6跟踪条控件的使用 325
15.4.7计时器控件 326
15.4.8模拟跑表计时器 326
15.5本章小结 327
第16章Windows窗体程序进阶 329
16.1 SDI和MDI应用程序 329
16.1.1基于对话框的应用程序 329
16.1.2 SDI应用程序 329
16.1.3 MDI应用程序 331
16.2使用对话框 335
16.2.1打开文件对话框OpenFileDialog 335
16.2.2保存文件对话框SaveFileDialog 337
16.2.3打印对话框 338
16.2.4字体设置对话框FontDialog 339
16.2.5颜色设置对话框ColorDialog 339
16.2.6对话框的模式 340
16.2.7自定义对话框 341
16.3 GDI+简介 344
16.3.1 GDI+概述 344
16.3.2 Graphics类 345
16.3.3画笔Pen类 346
16.3.4字体Font类 347
16.3.5位图Bitmap类 348
16.3.6实例扩展 348
16.4高级控件 349
16.4.1 MonthCalendar控件 349
16.4.2 DateTimePicker控件 349
16.4.3 TreeView控件 349
16.4.4 TabControl控件 351
16.5 Windows媒体播放器 353
16.5.1 Windows Media Player 353
16.5.2为程序添加媒体播放功能 354
16.6本章小结 355
第17章 文件操作 357
17.1 System.10命名空间 357
17.2 Stream类 359
17.3 File和FileInfo类 360
17.4 StreamReader和StreamWriter类 363
17.5 BinaryReader和BinaryWriter类 367
17.6 Directory和DirectoryInfo类 372
17.7 Path类 376
17.8异步文件操作 378
17.9本章小结 383
第18章 数据访问技术 384
18.1数据库基本知识 384
18.2 SQL简介 384
18.3 ADO.NET 385
18.3.1 ADO.NET简介 385
18.3.2类介绍 385
18.3.3 ADO.NET中的XML 387
18.3.4 ADO.NET中的SQL 395
18.3.5 DataReader类简介 403
18.3.6 DataSet类简介 405
18.4 ADO.NET与各种数据库的连接 407
18.4.1 Access 407
18.4.2 SQL Server 409
18.4.3 MySQL 410
18.4.4 Oracle 412
18.4.5其他数据库 414
18.5本章小结 415
第19章Windows窗体应用程序与数据库应用 416
19.1窗体控件的数据绑定 416
19.1.1定义数据源 417
19.1.2使用DataSet 419
19.1.3添加数据绑定控件 423
19.1.4绑定数据 425
19.2应用程序实例 427
19.3本章小结 431
第20章LINQ集成查询详解 433
20.1 LINQ实现字符串查询 433
20.1.1用LINQ查询字符串中的数字 435
20.1.2用LINQ统计单词出现的次数 437
20.2 LINQ访问ArrayList数组 440
20.2.1使用LINQ访问简单字符串ArrayList数组 441
20.2.2使用LINQ访问对象ArrayList数组 442
20.3 LINQ访问文件目录 443
20.4 LINQ to XML详解 447
20.4.1什么是LINQ to XML 447
20.4.2使用LINQ to XML创建XML树 450
20.4.3使用LINQ to XML加载XML文件 453
20.4.4用XmlReader创建树 454
20.4.5检测不正确的XML文档 457
20.5 LINQ to SQL详解 458
20.5.1什么是LINQ to SQL 458
20.5.2使用LINQ to SQL连接数据库 459
20.5.3使用LINQ to SQL直接执行SQL命令 466
20.6本章小结 468
第5篇Web开发 472
第21章Web应用 472
21.1 HTML简介 472
21.1.1 HTML的由来 472
21.1.2页面介绍 474
21.1.3格式设置 475
21.1.4文本标记 477
21.1.5多媒体 478
21.1.6表格 480
21.1.7链接 482
21.1.8框架 482
21.1.9表单 485
21.2 ASP.NET简介 488
21.2.1静态页面与动态页面 488
21.2.2其他动态页面技术 488
21.3第一个ASP.NET程序 488
21.4常用控件介绍 489
21.4.1 Label控件 490
21.4.2 TextBox控件 491
21.4.3 Button控件 491
21.4.4 DropDownList控件 492
21.4.5 ListBox控件 494
21.4.6 CheckBox控件和CheckBoxList控件 494
21.4.7 RadioButton控件和RadioButtonList控件 496
21.4.8 Image控件 497
21.4.9 Table控件 497
21.4.10 Calendar控件 498
21.5 ASP.NET服务端支持(IIS) 499
21.6本章小结 500
第22章 数据检验 501
22.1检验简介 501
22.1.1什么是检验 501
22.1.2客户端检验和服务端检验 502
22.2验证控件 502
22.2.1必须字段验证 503
22.2.2比较验证 507
22.2.3范围验证 512
22.2.4正则表达式验证 517
22.2.5自定义验证 521
22.2.6验证总结 526
22.3本章小结 529
第6篇 项目实战 532
第23章 俄罗斯方块网络对战 532
23.1游戏简介 532
23.1.1游戏规则简介 532
23.1.2名词术语 532
23.2单元格的设计与实现 533
23.2.1设计BrickUnit类 533
23.2.2测试BrickUnit类 534
23.3方块的设计与实现 535
23.3.1方块和单元格坐标 535
23.3.2设计Brick类 536
23.3.3改变Brick类样式 538
23.3.4方块的旋转 538
23.3.5测试Brick类 539
23.4游戏地图的设计 539
23.4.1与游戏地图相关的类 539
23.4.2游戏地图相关类的功能分析 540
23.4.3单元格集合 540
23.5游戏画面绘制 544
23.5.1双缓冲技术 544
23.5.2绘图操作 546
23.5.3局部刷新 549
23.5.4地图与方块的界面显示 549
23.6游戏地图的实现 550
23.6.1游戏地图框架 550
23.6.2判断满行和消除行 552
23.6.3粘贴活动方块 554
23.6.4移动和旋转方块 554
23.6.5落下活动方块 557
23.7游戏面板 557
23.7.1界面设计 557
23.7.2 FormPlay类的字段和属性 559
23.7.3游戏速度计算 559
23.7.4添加音效 559
23.7.5游戏设置窗体 561
23.7.6测试游戏面板 564
23.8本章小结 564
第24章 一个简单的浏览器 565
24.1实例功能介绍 565
24.2编程思想 567
24.3关键技术 568
24.3.1 HTTP 569
24.3.2 HTTP通信举例 569
24.3.3浏览器与HTTP 571
24.4浏览器程序实现步骤 571
24.4.1建立程序框架 571
24.4.2建立程序界面 575
24.4.3实现浏览器功能 580
24.5浏览器扩展功能的实现 586
24.5.1默认搜索选择 586
24.5.2记录和删除用户浏览的网站地址 587
24.5.3皮肤选择 589
24.6本章小结 589
第25章 网络监控软件 590
25.1编程思路 590
25.2关键技术 592
25.2.1套接字Socket 592
25.2.2事件与委托 593
25.3实现步骤 595
25.3.1建立程序框架 595
25.3.2 IP头格式定义 597
25.3.3 PacketArrivedEventArgs事件参数类和委托 598
25.3.4 SniffSocketException异常类的实现 600
25.3.5 SniffSocket类构造函数 600
25.3.6创建和绑定连接 600
25.3.7接收和处理IP包 601
25.3.8 MainForm主界面 604
25.3.9主窗体载入过程 605
25.3.10数据包中消息显示的实现 606
25.3.11主窗体sniff功能的实现 607
25.3.12独立的程序入口类 608
25.4本章小结 608
第26章 远程分布式数据库查询系统 609
26.1实例介绍 609
26.2编程思路 610
26.3关键技术 611
26.3.1分布式数据库技术 611
26.3.2使用ADO.NET访问数据库 612
26.4远程分布式数据库查询程序实现步骤 614
26.4.1建立数据库服务对象(DbServer)的DLL工程 614
26.4.2创建数据库和系统表 615
26.4.3 DbServer类的初始化过程 615
26.4.4 DbServer的查询方法 616
26.4.5根据DataSet创建临时表 618
26.4.6远程创建临时表 619
26.4.7合并数据表 620
26.4.8建立客户端程序框架 621
26.4.9建立客户端程序界面 622
26.4.10实现查询功能 623
26.4.11系统程序代码清单 625
26.5本章小结 626
第27章ASP.NET学生信息管理系统 627
27.1需求分析 627
27.1.1数据实体上下文 627
27.1.2权限分析 628
27.2界面设计 629
27.2.1登录页面设计 629
27.2.2学生管理界面 629
27.2.3专业及班级管理界面 630
27.2.4系统管理及字典管理界面 631
27.3主页面及控件实现 631
27.3.1主页面 631
27.3.2菜单控件 632
27.4学生管理实现 633
27.4.1学籍变动及奖惩 633
27.4.2新增学生 636
27.4.3管理学生信息 637
27.4.4查看学生信息 642
27.4.5更新学生信息 643
27.5组织管理实现 644
27.5.1学院管理 644
27.5.2专业管理 646
27.5.3班级管理 647
27.6系统管理实现 650
27.6.1用户登录 650
27.6.2用户更新 653
27.6.3用户管理 653
27.7字典管理实现 653
27.7.1学籍变动类型管理 654
27.7.2奖惩类型管理 654
27.8本章小结 655
附录A顺序、分支和循环结构(光盘中) 656
A.1顺序结构 656
A.2布尔逻辑 658
A.2.1位运算符 658
A.2.2关系运算 660
A.2.3逻辑表达式 661
A.3分支结构 662
A.3.1 if语句 662
A.3.2三元运算符 668
A.3.3 switch语句 669
A.3.4 break语句 672
A.3.5 default语句 673
A.4 goto语句 676
A.5 while循环 678
A.5.1 while循环语句的语法格式 678
A.5.2 while循环语句的应用 678
A.6 do循环 682
A.6.1 do循环语句的语法格式 682
A.6.2 do循环语句的应用 682
A.7 for循环 685
A.7.1 for循环语句的语法格式 685
A.7.2 for循环语句的应用 685
A.8循环的嵌套 692
A.9循环的中断 695
A.9.1 break语句 695
A.9.2 continue语句 697
A.9.3 goto语句 698
A.10本章小结 699
附录B数组与集合(光盘中) 702
B.1数组 702
B.1.1什么是数组 702
B.1.2数组的定义 702
B.1.3数组的索引 707
B.1.4数组的遍历 709
B.1.5数组元素的清空 711
B.1.6数组的查找 712
B.1.7数组的排序 712
B.1.8数组的使用 714
B.2集合 716
B.2.1什么是集合 716
B.2.2为什么使用集合 716
B.3 ArrayList动态数组 717
B.3.1 ArrayList的构造 717
B.3.2 ArrayList元素的添加 718
B.3.3 ArrayList元素的删除 720
B.3.4 ArrayList元素的查找 721
B.3.5 ArrayList元素的遍历 722
B.3.6 ArrayList向Array的转换 723
B.3.7缩减ArrayList的容量 725
B.4 Hashtable哈希表 727
B.4.1 Hashtable的构造 727
B.4.2 Hashtable元素的特点 728
B.4.3 Hashtable元素的操作 729
B.4.4 Hashtable的优点 732
B.5 Queue队列 732
B.5.1 Queue的概念 733
B.5.2 Queue的构造 733
B.5.3 Queue的相关属性 733
B.5.4 Queue的操作 734
B.5.5 Queue与其他集合的区别 735
B.6 Stack堆栈 736
B.6.1什么是Stack 736
B.6.2定义Stack 737
B.6.3 Stack元素的操作 737
B.6.4 Stack元素的获取规则 738
B.7 SortedList排序集合 740
B.7.1 SortedList的概念 740
B.7.2 SortedList元素的操作 740
B.7.3何时使用SortedList 742
B.8 Dictionary字典 743
B.8.1 Dictionary类简介 743
B.8.2更改Dictionary类中的条目 744
B.8.3更改条目的值 745
B.8.4查找条目 746
B.8.5遍历Dictionary 747
B.9对象和集合初始化 748
B.9.1什么是对象初始化器 748
B.9.2什么是集合初始化器 749
B.10匿名类型 750
B.10.1创建匿名类型对象 750
B.10.2匿名类型的特点 752
B.11本章小结 752
附录C运算符重载(光盘中) 754
C.1运算符的可重载性 754
C.2重载运算符的应用 755
C.3本章小结 760
附录D输入/输出(光盘中) 762
D.1文件 762
D.1.1 System.IO类介绍 762
D.1.2文件类File 764
D.1.3文件夹类Directory 766
D.1.4文件信息类FileInfo 767
D.1.5文件夹信息类DirectoryInfo 769
D.1.6文件信息类与文件夹信息类的用法 770
D.2流 770
D.2.1流操作类介绍 770
D.2.2文件流类FileStream 771
D.2.3流写入类StreamWriter 776
D.2.4流读取类StreamReader 778
D.2.5二进制流写入类BinaryWriter 780
D.2.6二进制流读取类BinaryReader 781
D.3高级实例 783
D.4本章小结 787