C#与.NET 3.5高级程序设计(第4版)第1章 NET之道 2 1.1 NET之前的世界 2 1.2 NET解决方案 4 1.3 NET平台构造块(CLR、CTS和CLS)简介 5 1.4 其他支持.NET的编程语言 7 1.5 NET程序集概览 8 1.6 CTS 13 1.7 CLS 16 1.8 CLR 17 1.9 程序集/命名空间/类型的区别 19 1.10 使用ildasm.exe探索程序集 23 1.11 使用Lutz Roeder的Reflector来查看程序集 24 1.12 部署.NET运行库 25 1.13 NET的平台无关性 25 1.14 小结 26 第2章 构建C#应用程序 27 2.1 NET Framework 3.5 SDK的作用 27 2.2 用csc.exe构建C#应用程序 28 2.3 使用TextPad构建.NET应用程序 32 2.4 使用Notepad++构建.NET应用程序 35 2.5 使用SharpDevelop构建.NET应用程序 37 2.6 使用Visual C# 2008 Express构建.NET应用程序 38 2.7 使用Visual Studio 2008构建.NET应用程序 40 2.8 其他.NET开发工具 49 2.9 小结 50 第二部分 C#核心编程结构 第3章 C#核心编程结构Ⅰ 52 3.1 一个简单的C#程序 52 3.2 有趣的题外话:System.Environment类的其他成员 57 3.3 System.Console类 58 3.4 系统数据类型和C#简化符号 61 3.5 System.String数据类型 67 3.6 窄化和宽化数据类型转换 73 3.7 C#迭代结构 78 3.8 条件结构和关系/相等运算符 79 3.9 小结 81 第4章 C#核心编程结构Ⅱ 82 4.1 方法和参数修饰符 82 4.2 成员重载 86 4.3 C#中的数组操作 88 4.4 枚举类型 93 4.5 结构类型 97 4.6 值类型和引用类型 99 4.7 值类型和引用类型:最后的细节 105 4.8 C#可空类型 106 4.9 小结 108 第5章 定义封装的类类型 109 5.1 C#类类型 109 5.2 类构造函数 111 5.3 this关键字的作用 114 5.4 static关键字 118 5.5 定义OOP的支柱 124 5.6 C#访问修饰符 127 5.7 第一个支柱:C#的封装支持 129 5.8 常量数据 136 5.9 只读字段 137 5.10 C#的分部类型 138 5.11 通过XML生成C#源代码的文档 139 5.12 查看劳动成果 143 5.13 小结 144 第6章 继承和多态 145 6.1 继承的基本机制 145 6.2 回顾Visual Studio类关系图 148 6.3 第二个支柱:继承 149 6.4 包含/委托编程 154 6.5 第三个支柱:C#的多态支持 156 6.6 基类/派生类的转换规则 166 6.7 超级父类:System.Object 168 6.8 小结 173 第7章 结构化异常处理 174 7.1 错误、bug与异常 174 7.2 NET异常处理的作用 174 7.3 最简单的例子 176 7.4 配置异常的状态 180 7.5 系统级异常(System.SystemException) 183 7.6 应用程序级异常(System.ApplicationException) 184 7.7 处理多个异常 188 7.8 finally块 191 7.9 谁在引发什么异常 192 7.10 未处理异常的后果 193 7.11 使用Visual Studio调试未处理的异常 193 7.12 小结 194 第8章 对象的生命周期 195 8.1 类、对象和引用 195 8.2 对象生命周期的基础 196 8.3 应用程序根的作用 198 8.4 对象的代 199 8.5 System.GC类型 200 8.6 构建可终结对象 203 8.7 构建可处置对象 205 8.8 构建可终结类型和可处置类型 208 8.9 小结 210 第三部分 C#高级编程结构 第9章 接口 212 9.1 接口类型 212 9.2 定义自定义接口 215 9.3 实现接口 216 9.4 在对象级别调用接口成员 218 9.5 接口作为参数 220 9.6 接口作为返回值 221 9.7 接口类型数组 222 9.8 使用Visual Studio 2008实现接口 222 9.9 通过显式接口实现解决命名冲突 223 9.10 定义接口层次结构 226 9.11 构建可枚举类型(IEnumerable和IEnumerator) 228 9.12 构建可克隆的对象(ICloneable) 233 9.13 构建可比较的对象(IComparable) 237 9.14 回调接口 241 9.15 小结 244 第10章 集合与泛型 245 10.1 System.Collections命名空间的接口 245 10.2 System.Collections命名空间的类类型 247 10.3 System.Collections.Specialized命名空间 251 10.4 装箱、拆箱以及和System.Object的关系 251 10.5 类型安全和强类型集合问题 254 10.6 System.Collections.Generic命名空间 257 10.7 创建自定义泛型方法 260 10.8 创建泛型结构和类 262 10.9 创建自定义泛型集合 264 10.10 创建泛型基类 268 10.11 创建泛型接口 269 10.12 小结 270 第11章 委托、事件和Lambda 271 11.1 NET委托类型 271 11.2 使用C#定义委托 272 11.3 System.MulticastDelegate与System.Delegate基类 273 11.4 最简单的委托示例 274 11.5 使用委托改造Car类型 277 11.6 更复杂的委托示例 281 11.7 委托协变 285 11.8 创建泛型委托 286 11.9 C#事件 288 11.10 泛型EventHandlerT委托 294 11.11 C#匿名方法 294 11.12 方法组转换 297 11.13 C# 3.0 Lambda运算符 298 11.14 小结 304 第12章 索引器、运算符和指针 305 12.1 索引器方法 305 12.2 运算符重载 309 12.3 自定义类型转换 317 12.4 指针类型 322 12.5 C#预处理指令 328 12.6 小结 330 第13章 C# 3.0的语言功能 331 13.1 隐式类型局部变量 331 13.2 自动属性 335 13.3 扩展方法 338 13.4 分部方法 346 13.5 对象初始化器 348 13.6 匿名类型 352 13.7 小结 356 第14章 LINQ 357 14.1 LINQ的作用 357 14.2 LINQ查询表达式初览 359 14.3 LINQ和泛型集合 364 14.4 LINQ和非泛型集合 365 14.5 查询运算符的内部表示 366 14.6 LINQ查询运算符 369 14.7 LINQ查询 374 14.8 小结 376 第四部分 使用.NET程序集编程 第15章 .NET程序集入门 378 15.1 定义自定义命名空间 378 15.2 .NET程序集的作用 383 15.3 .NET程序集的格式 384 15.4 构建和使用单文件程序集 387 15.5 构建和使用多文件程序集 395 15.6 私有程序集 397 15.7 共享程序集 402 15.8 使用共享程序集 406 15.9 配置共享程序集 407 15.10 GAC的内部结构 411 15.11 发行者策略程序集 413 15.12 codeBase元素 414 15.13 System.Configuration命名空间 415 15.14 机器配置文件 416 15.15 小结 416 第16章 类型反射、晚期绑定和基于特性的编程 417 16.1 类型元数据的必要性 417 16.2 反射 420 16.3 构建自定义的元数据查看器 423 16.4 动态加载程序集 427 16.5 反射共享程序集 428 16.6 晚期绑定 430 16.7 特性编程 432 16.8 构建自定义特性 435 16.9 程序集级别(和模块级别)特性 438 16.10 使用早期绑定反射特性 439 16.11 使用晚期绑定反射特性 439 16.12 反射、晚期绑定和自定义特性的使用背景 440 16.13 构建可扩展的应用程序 441 16.14 小结 445 第17章 进程、应用程序域和对象上下文 446 17.1 回顾传统的Win32进程 446 17.2 NET平台下与进程进行交互 448 17.3 NET应用程序域 453 17.4 对象上下文边界 458 17.5 进程、应用程序域和上下文小结 461 17.6 小结 461 第18章 构建多线程应用程序 463 18.1 进程、应用程序域、上下文及线程之间的关系 463 18.2 NET委托的简短回顾 465 18.3 委托的异步性 466 18.4 异步调用方法 467 18.5 System.Threading命名空间 471 18.6 System.Threading.Thread类 472 18.7 以编程方式创建次线程 474 18.8 并发问题 478 18.9 使用Timer Callback编程 483 18.10 CLR线程池 484 18.11 BackgroundWorker组件的作用 486 18.12 小结 488 第19章 CIL和动态程序集的作用 490 19.1 CIL编程的本质 490 19.2 CIL指令、特性和操作码 491 19.3 入栈和出栈:CIL基于栈的本质 492 19.4 正反向工程 493 19.5 CIL指令和特性 499 19.6 NET基类库、C#和CIL数据类型的映射 504 19.7 在CIL中定义成员 505 19.8 剖析CIL操作码 507 19.9 使用CIL构建.NET程序集 511 19.10 动态程序集 515 19.11 小结 522 第五部分 .NET基类库简介 第20章 文件输入输出和隔离存储 524 20.1 研究System.IO命名空间 524 20.2 Directory(Info)和File(Info)类型 525 20.3 使用DirectoryInfo类型 526 20.4 使用Directory类型 528 20.5 使用DriveInfo类类型 529 20.6 使用FileInfo类 530 20.7 使用File类型 533 20.8 Stream抽象类 535 20.9 使用StreamWriter和StreamReader类型 537 20.10 使用StringWriter和StringReader 540 20.11 使用BinaryWriter和BinaryReader 541 20.12 以编程方式“观察”文件 542 20.13 实现异步文件I/O操作 544 20.14 隔离存储的作用 545 20.15 代码访问安全入门 546 20.16 隔离存储概览 552 20.17 使用IsolatedStorageFile获取存储 556 20.18 实战隔离存储:ClickOnce部署 559 20.19 小结 562 第21章 对象序列化 564 21.1 对象序列化 564 21.2 为序列化配置对象 566 21.3 选择序列化格式化程序 567 21.4 使用BinaryFormatter序列化对象 569 21.5 使用SoapFormatter序列化对象 571 21.6 使用XmlSerializer序列化对象 572 21.7 序列化对象集合 574 21.8 自定义序列化过程 575 21.9 小结 579 第22章 ADO.NET之一:连接层 580 22.1 ADO.NET高层次定义 580 22.2 ADO.NET的数据提供程序 581 22.3 其他的ADO.NET命名空间 584 22.4 System.Data命名空间的类型 584 22.5 使用接口抽象数据提供程序 588 22.6 创建AutoLot数据库 590 22.7 ADO.NET 数据提供程序工厂模型 594 22.8 ADO.NET的连接式访问 598 22.9 使用数据读取器 603 22.10 构建可重用的数据访问库 604 22.11 创建控制台UI前端 610 22.12 使用SqlCommand进行异步数据访问 614 22.13 数据库事务 616 22.14 小结 619 第23章 ADO.NET之二:断开连接层 620 23.1 ADO.NET断开连接层 620 23.2 DataSet的作用 621 23.3 使用DataColumn 623 23.4 使用DataRow 625 23.5 使用DataTable 627 23.6 将DataTable对象绑定到用户界面 631 23.7 使用数据适配器填充DataSet/ DataTable 639 23.8 重访AutoLotDAL.dll 641 23.9 切换多表DataSet对象 644 23.10 Visual Studio 2008的数据访问工具 649 23.11 从UI层解耦自动生成的代码 656 23.12 小结 659 第24章 LINQ API编程 660 24.1 LINQ to ADO.NET的作用 660 24.2 使用LINQ to DataSet编程 660 24.3 使用LINQ to SQL编程 665 24.4 使用sqlmetal.exe生成实体类 669 24.5 使用Visual Studio 2008建立实体类 674 24.6 使用LINQ to XML操作XML文档 676 24.7 在内存文档中导航 680 24.8 小结 682 第25章 WCF 683 25.1 各种分布式计算API 683 25.2 WCF的作用 688 25.3 WCF核心程序集 690 25.4 Visual Studio WCF项目模板 691 25.5 WCF应用程序的基本构成 692 25.6 WCF的ABC 693 25.7 构建WCF服务 697 25.8 承载WCF服务 700 25.9 构建WCF客户端应用程序 706 25.10 使用WCF服务库项目模板 710 25.11 以Windows服务承载WCF服务 712 25.12 异步调用服务 716 25.13 定义WCF数据契约 717 25.14 小结 722 第26章 WF 723 26.1 定义业务流程 723 26.2 WF的构建块 724 26.3 WF程序集、命名空间和项目 728 26.4 构建一个启用工作流的简单应用 730 26.5 WF引擎承载代码 734 26.6 在工作流中调用Web服务 736 26.7 构建可重用的WF代码库 746 26.8 关于自定义活动的简要说明 750 26.9 小结 751 第六部分 桌面用户界面 第27章 Windows Forms编程 754 27.1 Windows Forms 命名空间 754 27.2 创建一个简单的Windows Forms 程序(不用IDE) 755 27.3 Visual Studio Windows Forms项目模板 759 27.4 剖析Form 764 27.5 响应鼠标活动 769 27.6 响应键盘活动 771 27.7 设计对话框 772 27.8 通过GDI+呈现图形数据 778 27.9 创建一个完整的Windows Forms应用程序 782 27.10 小结 788 第28章 WPF和XAML 789 28.1 WPF背后的动机 789 28.2 各种形式的WPF应用程序 791 28.3 WPF程序集 793 28.4 创建(不使用XAML的)WPF应用程序 798 28.5 Application类型的其他细节 802 28.6 Window类型的其他细节 804 28.7 构建(XAML相关的)WPF应用程序 807 28.8 将标记转换为.NET程序集 810 28.9 使用代码隐藏文件实现的关注点的分离 814 28.10 XAML语法 815 28.11 使用Visual Studio 2008构建WPF应用程序 826 28.12 在运行时处理XAML:SimpleXaml- Pad.exe 830 28.13 微软Expression Blend的作用 833 28.14 小结 834 第29章 使用WPF控件编程 835 29.1 WPF控件库概述 835 29.2 使用XAML声明控件 836 29.3 依赖属性的作用 839 29.4 路由事件 842 29.5 使用Button类型 845 29.6 使用CheckBoxe和RadioButton 848 29.7 使用ListBox和ComboBox类型 850 29.8 使用文本区 854 29.9 使用面板进行内容布局 857 29.10 使用嵌套面板创建窗口框架 864 29.11 WPF控件命令 868 29.12 WPF数据绑定模型 870 29.13 使用IValueConverter进行数据转换 872 29.14 绑定到自定义对象 875 29.15 将UI元素绑定到XML文档 878 29.16 小结 881 第30章 WPF 2D图形呈现、资源和主题 882 30.1 WPF图形呈现服务 882 30.2 探究Shape派生类 887 30.3 使用WPF画刷 889 30.4 使用WPF画笔 891 30.5 探究Drawing派生类 892 30.6 UI变换的功能 895 30.7 WPF动画服务 897 30.8 WPF的资源体系 903 30.9 为WPF控件定义应用样式 905 30.10 使用模板改变控件的UI 913 30.11 小结 916 第七部分 使用ASP.NET构建Web应用程序 第31章 构建ASP.NET网页 918 31.1 HTTP的作用 918 31.2 Web应用程序和Web服务 919 31.3 HTML的作用 921 31.4 客户端脚本的作用 925 31.5 提交表单数据(GET和POST) 927 31.6 构建传统的ASP页面 927 31.7 传统ASP相关问题 929 31.8 ASP.NET命名空间 930 31.9 ASP.NET网页代码模型 931 31.10 ASP.NET站点目录结构细节 939 31.11 ASP.NET页面编译周期 940 31.12 页面类型的继承链 942 31.13 与传入的HTTP请求交互 943 31.14 与输出HTTP响应交互 946 31.15 ASP.NET网页的生命周期 947 31.16 Web.config文件的作用 950 31.17 小结 952 第32章 ASP.NET Web控件、主题和母版页 953 32.1 Web控件的本质 953 32.2 System.Web.UI.Control类型 955 32.3 System.Web.UI.WebControls.WebControl类型 957 32.4 ASP.NET Web控件的类别 958 32.5 构建功能丰富的ASP.NET站点 959 32.6 验证控件的作用 970 32.7 使用主题 975 32.8 使用HTML表格布局控件 979 32.9 小结 981 第33章 ASP.NET状态管理技术 982 33.1 状态问题 982 33.2 ASP.NET状态管理技术 984 33.3 ASP.NET视图状态的作用 984 33.4 Global.asax文件的作用 987 33.5 应用程序状态与会话状态差别 989 33.6 使用应用程序缓存 993 33.7 维护会话数据 996 33.8 cookie 999 33.9 sessionState元素的作用 1001 33.10 ASP.NET用户配置API 1003 33.11 小结 1008 第八部分 附录 附录A COM与.NET的互操作性 1010 A.1 NET互操作的研究范围 1010 A.2 NET调用COM互操作的简单示例 1011 A.3 NET互操作程序集 1013 A.4 运行库可调用包装 1014 A.5 COM IDL的作用 1016 A.6 使用类型库创建互操作程序集 1020 A.7 创建一个更复杂的COM服务 1021 A.8 互操作程序集 1023 A.9 在COM中使用.NET 1027 A.10 CCW的作用 1028 A.11 NET类接口的作用 1029 A.12 构建.NET类型 1029 A.13 生成类型库并注册.NET类型 1030 A.14 导出类型信息 1031 A.15 创建一个Visual Basic 6.0的测试客户端 1032 A.16 小结 1033 附录B 使用Mono进行平台无关的.NET开发 1034 B.1 NET的平台无关性 1034 B.2 获取和安装Mono 1036 B.3 Mono开发工具 1038 B.4 使用Mono创建.NET应用程序 1040 B.5 推荐学习 1046 B.6 小结 1046 索引 1047 |
|
来自: Frank_Chia > 《编程基础》