第1章 计算机、Internet与Visual C#简介 1
1.1 简介 2
1.2 什么是计算机 2
1.3 计算机组织 2
1.4 个人计算、分布式计算与客户/服务器计算 3
1.5 硬件发展趋势 3
1.6 Microsoft的Windows操作系统 4
1.7 机器语言、汇编语言和高级语言 4
1.8 Visual Basic 5
1.9 C、C++和Java 6
1.10 Visual C# 6
1.11 其他高级语言 7
1.12 结构化编程 7
1.13 关键软件发展趋势:对象技术 7
1.14 Internet与万维网 8
1.15 XML 9
1.16 Microsoft的.NET 9
1.17 .NET框架与公共语言运行环境 9
1.18 尝试C#高级绘图程序 10
1.19 (必读)软件工程案例研究:对象技术与UML简介 12
1.20 总结 15
1.21 Web资源 15
第2章 Visual C# 2008 Express简介 24
2.1 简介 24
2.2 Visual Studio 2008 IDE概述 25
2.3 菜单栏与工具栏 29
2.4 Visual Studio IDE导航 30
2.5 使用帮助 34
2.6 用可视编程生成简单程序,显示文本与图形 35
2.7 总结 42
2.8 Web资源 42
第3章 C#程序简介 50
3.1 简介 50
3.2 简单C#程序:显示一行文本 51
3.3 在Visual C# Express中创建简单程序 55
3.4 修改简单C#程序 60
3.5 用Console.Write与Console.WriteLine格式化文本 61
3.6 另一个C#程序:整数相加 62
3.7 内存概念 65
3.8 算术 65
3.9 决策:关系和相等运算符 67
3.10 (选读)软件工程案例研究:分析ATM需求文档 70
3.11 总结 76
3.12 Web资源 76
第4章 类与对象简介 85
4.1 简介 85
4.2 类、对象、方法、属性和实例变量 86
4.3 声明带方法的类和实例化类的对象 87
4.4 声明带参数的方法 89
4.5 实例化变量与属性 91
4.6 带属性的UML类框图 95
4.7 带属性和set与get访问方法的软件工程 95
4.8 自实现属性 96
4.9 值类型与引用类型 97
4.10 用构造函数初始化对象 98
4.11 浮点数与decimal类型 100
4.12 (选读)软件工程案例研究:确定ATM需求文档中的类 104
4.13 总结 108
第5章 控制语句:第一部分 114
5.1 简介 114
5.2 算法 115
5.3 伪代码 115
5.4 控制结构 115
5.5 if单选择语句 117
5.6 if...else双选择结构 118
5.7 while重复语句 121
5.8 构造算法:计数器控制重复 122
5.9 构造算法:标记控制重复 125
5.10 构造算法:嵌套控制语句 130
5.11 复合赋值运算符 134
5.12 自增和自减运算符 134
5.13 简单类型 136
5.14 (选读)软件工程案例研究:确定ATM系统的类属性 137
5.15 总结 140
第6章 控制语句:第二部分 150
6.1 简介 150
6.2 计数器控制循环的要点 151
6.3 for循环语句 152
6.4 for循环使用举例 155
6.5 do...while重复语句 158
6.6 switch多选择语句 159
6.7 break与continue语句 164
6.8 逻辑运算符 165
6.9 结构化编程小结 169
6.10 (选读)软件工程案例研究:确定ATM系统中对象的状态和活动 172
6.11 总结 176
第7章 方法详述 184
7.1 简介 185
7.2 C#代码包装 185
7.3 静态方法,静态变量和Math类 186
7.4 声明多参数方法 188
7.5 关于方法声明与使用 191
7.6 方法调用堆栈与激活记录 192
7.7 变元提升与类型转换 192
7.8 .NET框架类库 193
7.9 案例研究:随机数生成 194
7.10 案例研究:机会游戏(引入枚举) 197
7.11 声明作用域 201
7.12 方法重载 203
7.13 递归 205
7.14 按值与按引用传递变元 207
7.15 (选读)软件工程案例研究:确定ATM的类操作 209
7.16 总结 213
第8章 数组 226
8.1 简介 226
8.2 数组 227
8.3 声明与创建数组 228
8.4 数组使用举例 228
8.5 案例研究:洗牌与发牌模拟 235
8.6 foreach语句 237
8.7 将数组与数组元素传入方法 239
8.8 按值与按引用传递数组 240
8.9 案例研究:GradeBook类用数组存储成绩 243
8.10 多维数组 246
8.11 案例研究:GradeBook类使用矩形数组 250
8.12 游长变元表 254
8.13 使用命令行变元 255
8.14 (选读)软件工程案例研究:ATM系统中对象间的协作 256
8.15 总结 261
第9章 LINQ与泛型集合简介 276
9.1 简介 276
9.2 用LINQ查询数组 277
9.3 集合简介 283
9.4 用LINQ查询泛型集合 285
9.5 总结 286
9.6 Deitel LINQ资源中心 286
第10章 再论类与对象 290
10.1 简介 291
10.2 Time类案例研究 291
10.3 控制成员访问 294
10.4 用this引用访问当前对象成员 294
10.5 索引器 296
10.6 Time类案例研究:重载构造函数 298
10.7 默认与无参数构造函数 302
10.8 合成 303
10.9 内存回收与析构函数 305
10.10 静态类成员 305
10.11 只读实例变量 308
10.12 软件复用性 309
10.13 数据抽象与封装 310
10.14 Time类案例研究:创建类库 311
10.15 internal访问 314
10.16 Class View与Object Browser 315
10.17 对象初始化器 316
10.18 Time类案例研究:扩展方法 318
10.19 代理 320
10.20 lambda表达式 322
10.21 匿名类型 324
10.22 (选读)软件工程案例研究:开始编写ATM系统的类 325
10.23 总结 329
第11章 面向对象编程:继承 338
11.1 简介 339
11.2 基类与派生类 339
11.3 protected成员 341
11.4 基类与派生类的关系 341
11.5 派生类的构造函数 357
11.6 继承与软件工程 361
11.7 object类 362
11.8 总结 363
第12章 多态、接口与运算符重载 367
12.1 简介 368
12.2 多态举例 369
12.3 演示多态行为 369
12.4 抽象类与方法 371
12.5 案例研究:使用多态的工资系统 373
12.6 sealed方法与类 383
12.7 案例研究:创建与使用接口 383
12.8 运算符重载 390
12.9 (选读)软件工程案例研究:在ATM系统中合并继承与多态 392
12.10 总结 397
第13章 异常处理 401
13.1 简介 402
13.2 异常处理概述 402
13.3 例子:除数为0不用异常处理 403
13.4 例子:处理DivideByZeroException与FormatException 405
13.5 .NET Exception层次 408
13.6 finally块 409
13.7 Exception属性 414
13.8 用户定义异常类 417
13.9 总结 420
第14章 图形用户界面观念:第一部分 424
14.1 简介 425
14.2 Windows窗体 425
14.3 事件处理 427
14.4 控件属性与布局 432
14.5 卷标、文本框与按钮 434
14.6 组框与面板 436
14.7 复选框与单选钮 438
14.8 图形框 444
14.9 工具提示 446
14.10 数字上下控件 447
14.11 鼠标事件处理 448
14.12 键盘事件处理 450
14.13 总结 453
第15章 图形用户界面观念:第二部分 460
15.1 简介 460
15.2 菜单 461
15.3 MonthCalendar控件 467
15.4 DateTimePicker控件 468
15.5 LinkLabel控件 470
15.6 ListBox控件 472
15.7 CheckedListBox控件 475
15.8 ComboBox控件 477
15.9 TreeView控件 479
15.10 ListView控件 483
15.11 TabControl控件 487
15.12 多文档界面(MDI)窗口 490
15.13 可视化继承 496
15.14 用户定义控件 498
15.15 总结 501
第16章 GUI与视窗演示基础 509
16.1 简介 510
16.2 WPF(视窗演示基础) 510
16.3 XML基础 511
16.4 构造数据 513
16.5 XML名字空间 517
16.6 使用XAML的声明或GUI编程 519
16.7 在Visual C# Express中创建WPF程序 520
16.8 控件布局 521
16.9 事件处理 525
16.10 命令与常见程序任务 531
16.11 WPF GUI定制 534
16.12 用样式改变控件外观 534
16.13 定制窗口 537
16.14 用控件模板定义控件外观 539
16.15 数据驱动GUI与数据绑定 543
16.16 总结 547
16.17 Web资源 547
第17章 WPF图形与多媒体 559
17.1 简介 559
17.2 控制字体 560
17.3 基本形状 561
17.4 多边形与多义线 562
17.5 画刷 564
17.6 变换 569
17.7 WPF定制:电视GUI 570
17.8 动画 577
17.9 三维实体与变换(选读) 579
17.10 总结 583
第18章 字符、字符串与正则表达式 590
18.1 简介 591
18.2 字符与字符串基础 591
18.3 string构造函数 592
18.4 string索引器、Length属性和CopyTo方法 593
18.5 比较字符串 594
18.6 定位string中的字符和子串 596
18.7 从string中取子串 598
18.8 接合字符串 598
18.9 其他string方法 599
18.10 StringBuilder类 600
18.11 StringBuilder类的Length与Capacity属性、EnsureCapacity方法和索引器 601
18.12 StringBuilder类的Append与AppendFormat方法 602
18.13 StringBuilder类的Insert、Remove与Replace方法 604
18.14 Char方法 606
18.15 洗牌与发牌模拟 607
18.16 正则表达式与Regex类 610
18.17 总结 619
第19章 文件与流 625
19.1 简介 625
19.2 数据层次 626
19.3 文件与流 627
19.4 File与Directory类 628
19.5 创建顺序访问文本文件 634
19.6 读取顺序访问文本文件数据 640
19.7 案例分析:使用LINQ的信用查询程序 644
19.8 序列化 648
19.9 用对象序列化创建顺序访问文件 648
19.10 读取和去序列化二进制文件数据 653
19.11 总结 655
第20章 XML与LINQ to XML 662
20.1 简介 662
20.2 文档类型定义 663
20.3 W3C XML模式文档 665
20.4 可扩展样式表语言和XSL转换 670
20.5 LINQ to XML:文档对象模型(DOM) 676
20.6 LINQ to XML类层次 678
20.7 LINQ to XML:名字空间与创建文档 684
20.8 XSLT与XslCompiledTransform类 686
20.9 总结 688
20.10 Web资源 688
第21章 数据库与LINQ to SQL 695
21.1 简介 696
21.2 关系数据库 696
21.3 关系数据库概述:Books数据库 697
21.4 SQL 699
21.5 LINQ to SQL 705
21.6 LINQ to SQL编程:从数据库取得信息 706
21.7 更复杂的LINQ查询和数据绑定 709
21.8 用LINQ取得多个表的数据 712
21.9 创建主视图/细目视图 715
21.10 LINQ to SQL编程:地址簿案例研究 718
21.11 总结 722
21.12 Web资源与工具 722
第22章 ASP.NET 3.5与ASP.NET AJAX 729
22.1 简介 730
22.2 简单HTTP事务 731
22.3 多层程序体系结构 733
22.4 创建并运行简单Web窗体例子 734
22.5 Web控件 744
22.6 会话跟踪 755
22.7 案例研究:ASP.NET中连接数据库 766
22.8 案例研究:加密图书数据库程序 773
22.9 ASP.NET AJAX 791
22.10 新的ASP.NET 3.5数据控件 797
22.11 总结 797
22.12 Web资源 798
第23章 WCF Web服务 808
23.1 简介 809
23.2 WCF Web服务基础 809
23.3 简单对象访问协议(SOAP) 810
23.4 表示状态转移协议(REST) 810
23.5 JavaScript对象标注(JSON) 810
23.6 发表与消费基于SOAP的Web服务 811
23.7 发表与消费基于REST的XML Web服务 817
23.8 发表与消费基于REST的JSON Web服务 820
23.9 Blackjack Web服务:在SOAP的Web服务中使用会话跟踪 823
23.10 航空订票Web服务:数据库访问和从ASP.NET调用服务 832
23.11 方程生成器:返回用户定义类型 835
23.12 总结 843
23.13 Deitel Web服务资源中心 844
第24章 Silverlight、RIA与多媒体 850
24.1 简介 851
24.2 平台概述 852
24.3 Silverlight运行环境与工具安装 852
24.4 建立Silverlight天气浏览器程序 852
24.5 动画与FlickrViewer 860
24.6 图形与深度缩放 865
24.7 声音与视频 874
24.8 独立存储 877
24.9 Silverlight演示与Web资源 877
24.10 总结 878
第25章 查找与排序 885
25.1 简介 885
25.2 查找算法 886
25.3 排序算法 892
25.4 总结 902
第26章 数据结构 906
26.1 简介 906
26.2 简单类型结构、加框和去框 907
26.3 自引用类 907
26.4 链表 908
26.5 堆栈 916
26.6 队列 919
25.7 树 921
26.8 总结 931
第27章 泛型 936
27.1 简介 936
27.2 泛型方法的动机 937
27.3 泛型方法实现 938
27.4 类型约束 940
27.5 重载泛型方法 942
27.6 泛型类 942
27.7 总结 948
第28章 集合 953
28.1 简介 953
28.2 集合概述 954
28.3 Array类与枚举 955
28.4 非泛型集合 957
28.5 泛型集合 965
28.6 总结 970
附录A 运算符优先级表 975
附录B 简单类型 977
附录C 数字系统 978
附录D ATM案例研究代码 988
附录E UML 2的其他框图 1006
附录F ASCII字符集 1007
附录G Unicode 1008
附录H 使用Visual Studio 2008调试器 1016
索引 1031