C#高级编程

2008年清华大学出版社出版的图书
《C#高级编程》是2008年清华大学出版社出版的图书，作者是（美）内格尔（Nagel.C）。本书以最新的.NET Framework 2.0和Visual Studio 2005为基础，全面介绍了C#编程的工具，提供了理解.NET体系结构的工作原理所必需的背景知识。
内容简介
C#和.NET全面革新了编写程序的方式。
应用程序，例如数据库访问和高级绘图技术。这种方式有助于对c#语言的各个方面进行深入细致的理解，以专业人员的方式开始编程。
C#经典名著！也是Wrox红皮书中最畅销的品种之一，从第一版开始就名满天下：其第3版被中华读书报、CSDN、《程序员》等机构评选为2005年最权威的十大IT图书之一(第2名)；在中国版协、中国出版科学研究所、(出版参考、杂志组织的“2005年度输出版、引进版优秀图书”评选活动中获得“2005年度引进版科技类优秀图书”奖。第4版面向C#2005，在全面展示．NET新特性的同时继续完善原有的内容，是有一些C#基础知识的学习者或者想迁移到C#的其他程序员全面掌握C#的首选教程。
媒体及编辑推荐
本书以最新的.NET Frame-work2.0和Visual Studio2005为基础。
本书首先探讨了C#的基础知识，包括基本语法、数据类型和面向对象的特性。接着阐述了如何把该语言应用于各种使用相关技术的应用程序，倒如数据库访问和高级绘图技术。这种方式有助于对C#语言的各个方面进行深入细致的理解，以专业人员的方式开始编程。
本书涵盖的内容有助于编写动态Web页面、XML Web服务、分布式应用程序的组件，以及Windows桌面应用程序等。
本书主要内容：NET环境中的编程原则，创建Windows应用程序和Windows服务的方式，使用已有的COM组件和NET应用程序，用asp . net编写动态的Web页面和Web服务。用C#2005处理XML的技术。用ADO . NET访问数据库，与目录交互操作，编写在Web站点上运行的删节组件。
本书读者对象：本书适用于已具有C++、Visual Basic或J++等编程经验的开人发员。本书还适合于了解NET1.0，但准备迁移到NET2.0和Visual Studio 2005的程序员。
评论该书对于c#语言、.NET framework的学习很有帮助，但是是从外文翻译过来的，对于有些内容不容易理解。
本书目录
第Ⅰ部分 C# 语言
第1章 .NET体系结构
1.1 C#与.NET的关系
1.2公共语言运行库
1.2.1 平台无关性
1.2.2 提高性能
1.2.3 语言的互操作性
1.3 中间语言
1.3.1 面向对象和接口的支持
1.3.2 相异值类型和引用类型
1.3.3 强数据类型
1.3.4 通过异常处理错误
1.3.5 特性的使用
1.4 程序集
1.4.1 私有程序集
1.4.2 共享程序集
1.4.3 反射
1.5 .NET Framework类
1.6 命名空间
1.7 用C#创建.NET应用程序
1.7.1 创建ASP . NET应用程序
1.7.2 创建Windows窗体
1.7.3 使用Windows Presentation Foundation(WPF)
1.7.4 Windows控件
1.7.5 Windows服务
1.7.6 Windows Communication Foundation(WCF)
1.8 C#在.NET企业体系结构中的作用
1.9 小结
第2章 C#基础
2.1 引言
2.2 第一个C#程序
2.2.1 代码
2.2.2 编译并运行程序
2.2.3 详细介绍
2.3 变量
2.3.1 变量的初始化
2.3.2 类型推断
2.3.3 变量的作用域
2.3.4 常量
2.4 预定义数据类型
2.4.1 值类型和引用类型
2.4.2 CTS类型
2.4.3 预定义的值类型
2.4.4 预定义的引用类型
2.5 流控制
2.5.1 条件语句
2.5.2 循环
2.5.3 跳转语句
2.6 枚举
2.7数组
2.8 命名空间
2.8.1 using语句
2.8.2 命名空间的别名
2.9 Main()方法
2.9.1 多个Main()方法
2.9.2 给Main()方法传送参数
2.10 有关编译C#文件的更多内容
2.11 控制台I/O
2.12 使用注释
2.12.1 源文件中的内部注释
2.12.2 XML文档说明
2.13 C#预处理器指令
2.13.1 #define和 #undef
2.13.2 #if, #elif, #else和#endif
2.13.3 #warning和 # error
2.13.4 #region和#endregion
2.13.5 #line
2.13.6 #pragma
2.14 C#编程规则
2.14.1 用于标识符的规则
2.14.2 用法约定
2.15 小结
第3章 对象和类型
3.1 类和结构
3.2 类成员
3.2.1 数据成员
3.2.2 函数成员
3.2.3 只读字段
3.3 匿名类型
3.4 结构
3.4.1 结构是值类型
3.4.2 结构和继承
3.4.3 结构的构造函数
3.5 部分类
3.6静态类
3.7 Object类
3.7.1 System.Object方法
3.7.2 ToString()方法
3.8 扩展方法
3.9 小结
第4章 继承
4.1 继承的类型
4.1.1 实现继承和接口继承
4.1.2 多重继承
4.1.3 结构和类
4.2 实现继承
4.2.1 虚方法
4.2.2 隐藏方法
4.2.3 调用函数的基类版本
4.2.4 抽象类和抽象函数
4.2.5 密封类和密封方法
4.2.6派生类的构造函数
4.3 修饰符
4.3.1 可见性修饰符
4.3.2 其他修饰符
4.4 接口
4.4.1 定义和实现接口
4.4.2 派生的接口
4.5 小结
第5章 数组
5.1 简单数组
5.1.1 数组的声明
5.1.2 数组的初始化
5.1.3 访问数组元素
5.1.4 使用引用类型
5.2多维数组
5.3 锯齿数组
5.4 Array类
5.4.1 属性
5.4.2 创建数组
5.4.3 复制数组
5.4.4 排序
5.5 数组和集合接口
5.5.1 IEumerable接口
5.5.2 ICollection接口
5.5.3 IList接口
5.6 枚举
5.6.1 IEnumerator接口
5.6.2 foreach语句
5.6.3 yield语句
5.7 小结
第6章 运算符和类型强制转换
6.1 运算符
6.1.1 运算符的简化操作
6.1.2条件运算符
6.1.3 checked和unchecked运算符
6.1.4 is运算符
6.1.5 as运算符
6.1.6 sizeof运算符
6.1.7 typeof运算符
6.1.8 可空类型和运算符
6.1.9 空接合运算符
6.1.10 运算符的优先级
6.2 类型的安全性
6.2.1 类型转换
6.2.2 装箱和拆箱
6.3 对象的相等比较
6.3.1 引用类型的相等比较
6.3.2 值类型的相等比较
6.4运算符重载
6.4.1 运算符的工作方式
6.4.2 运算符重载的示例：Vector结构
6.5 用户定义的数据类型转换
6.5.1 执行用户定义的类型转换
6.5.2 多重数据类型转换
6.6 小结
第7章 委托和事件
7.1 委托
7.1.1 在C#中声明委托
7.1.2 在C#中使用委托
7.1.3 简单的委托示例
7.1.4 BubbleSorter示例
7.1.5 多播委托
7.1.6 匿名方法
7.1.7 ?表达式
7.1.8 协变和抗变
7.2 事件
7.2.1 从接收器的角度讨论事件
7.2.2 生成事件
7.3 小结
第8章 字符串和正则表达式
8.1 System.String类
8.1.1 创建字符串
8.1.2 StringBuilder成员
8.1.3 格式化字符串
8.2 正则表达式
8.2.1 正则表达式概述
8.2.2 RegularExpressionsPlayaround示例
8.2.3 显示结果
8.2.4 匹配、组合和捕获
8.3 小结
第9章 泛型
9.1 概述
9.1.1 性能
9.1.2 类型安全
9.1.3二进制代码的重用
9.1.4 代码的扩展
9.1.5 命名约定
9.2 创建泛型类
9.3 泛型类的特性
9.3.1 默认值
9.3.2 约束
9.3.3 继承
9.3.4 静态成员
9.4 泛型接口
9.5 泛型方法
9.6 泛型委托
9.6.1 执行委托调用的方法
9.6.2 对Array类使用泛型委托
9.7 Framework的其他泛型类型
9.7.1 结构Nullable
9.7.2 EventHandler
9.7.3 ArraySegment
9.8 小结
第10章 集合
10.1 集合接口和类型
10.2 列表
10.2.1 创建列表
10.2.2 只读集合
10.3 队列
10.4 栈
10.5 链表
10.6 有序表
10.7字典
10.7.1 键的类型
10.7.2 字典示例
10.7.3 Lookup类
10.7.4 其他字典类
10.8 HashSet
10.9 位数组
10.9.1 BitArray
10.9.2 BitVector32
10.10 性能
10.11 小结
第11章 Language Integrated Query
11.1 LINQ概述
11.1.1 使用List的查询
11.1.2 扩展方法
11.1.3 λ表达式
11.1.4 LINQ查询
11.1.5 推迟查询的执行
11.2 标准的查询操作符
11.2.1 过滤
11.2.2 用索引来过滤
11.2.3 类型过滤
11.2.4 复合的from子句
11.2.5 排序
11.2.6 分组
11.2.7 对嵌套的对象分组
11.2.8 连接
11.2.9 设置操作
11.2.10 分区
11.2.11 合计操作符
11.2.12 转换
11.2.13 生成操作符
11.3 表达式树
11.4 LINQ提供程序
11.5 小结
第12章内存管理和指针
12.1后台内存管理
12.1.1 值数据类型
12.1.2 引用数据类型
12.1.3 垃圾收集
12.2 释放未托管的资源
12.2.1 析构函数
12.2.2 IDisposable接口
12.2.3 实现IDisposable接口和析构函数
12.3 不安全的代码
12.3.1 用指针直接访问内存
12.3.2 指针示例：PointerPlayaround
12.3.3 使用指针优化性能
12.4 小结
第13章 反射
13.1 定制特性
13.1.1 编写定制特性
13.1.2 定制特性示例：WhatsNewAttributes
13.2 反射
13.2.1 System.Type类
13.2.2 TypeView示例
13.2.3 Assembly类
13.2.4 完成WhatsNewAttributes示例
13.3 小结
第14章 错误和异常
14.1 异常类
14.2 捕获异常
14.2.1 执行多个catch块
14.2.2 在其他代码中捕获异常
14.2.3 System.Exception属性
14.2.4 没有处理异常时所发生的情况
14.2.5 嵌套的 try块
14.3 用户定义的异常类
14.3.1 捕获用户定义的异常
14.3.2 抛出用户定义的异常
14.3.3 定义异常类
14.4 小结
第Ⅱ部分 Visual Studio
第15章 Visual Studio 2008
15.1 使用Visual Studio 2008
15.1.1 创建项目
15.1.2 解决方案和项目
15.1.3 Windows应用程序代码
15.1.4 读取Visual Studio 6项目
15.1.5 项目的浏览和编码
15.1.6 生成项目
15.1.7 调试
15.2 修订功能
15.3 多目标
15.4 WPF、WCF、WF等
15.4.1 在Visual Studio中建立WPF应用程序
15.4.2 在Visual Studio中建立WF应用程序
15.5 小结
第16章 部署
16.1 部署的设计
16.2 部署选项
16.2.1 Xcopy实用工具
16.2.2 Copy Web工具
16.2.3 发布Web站点
16.2.4 部署项目
16.2.5 ClickOnce
16.3 部署的要求
16.4 部署.NET运行库
16.5 简单的部署
16.5.1 Xcopy部署
16.5.2 Xcopy和Web应用程序
16.5.3 Copy Web工具
16.5.4 发布Web站点
16.6 Installer项目
16.6.1 Windows Installer
16.6.2 创建安装程序
16.7 ClickOnce
16.7.1 ClickOnce操作
16.7.2 发布应用程序
16.7.3 ClickOnce设置
16.7.4 应用程序缓存
16.7.5 安全性
16.7.6 高级选项
16.8 小结
第Ⅲ部分基类库
第17章 程序集
17.1 程序集的含义
17.1.1 程序集的特性
17.1.2 程序集的结构
17.1.3 程序集的清单
17.1.4 命名空间、程序集和组件
17.1.5 私有程序集和共享程序集
17.1.6 辅助程序集
17.1.7 查看程序集
17.2 构建程序集
17.2.1 创建模块和程序集
17.2.2 程序集的属性
17.3 动态加载和创建程序集
17.4应用程序域
17.5 共享程序集
17.5.1强名
17.5.2 使用强名获得完整性
17.5.3全局程序集缓存
17.5.4 创建共享程序集
17.5.5 创建强名
17.5.6 安装共享程序集
17.5.7 使用共享程序集
17.5.8 程序集的延迟签名
17.5.9 引用
17.5.10 本机图像生成器
17.6 配置.NET应用程序
17.6.1 配置类别
17.6.2 为搜索程序集配置目录
17.7 版本问题
17.7.1 版本号
17.7.2 编程获取版本
17.7.3 应用程序配置文件
17.7.4 发布方的策略文件
17.7.5 运行库的版本
17.8 小结
第18章 跟踪和事件
18.1 跟踪
18.1.1 跟踪源
18.1.2 跟踪开关
18.1.3 跟踪监听器
18.1.4 过滤器
18.1.5 断言
18.2 事件日志
18.2.1 事件日志体系架构
18.2.2 事件日志类
18.2.3 创建事件源
18.2.4 写入事件日志
18.2.5 资源文件
18.3 性能监控
18.3.1 性能监控类
18.3.2 性能计数器的构建
18.3.3 添加PerformanceCounter组件
18.3.4perfmon.exe
18.4 小结
第19章 线程和同步
19.1 概述
19.2 异步委托
19.2.1 投票
19.2.2 等待句柄
19.2.3 异步回调
19.3 Thread类
19.3.1 给线程传送数据
19.3.2 后台线程
19.3.3 线程的优先级
19.3.4 控制线程
19.4 线程池
19.5 线程问题
19.5.1 竞态条件
19.5.2 死锁
19.6 同步
19.6.1 lock语句和线程安全
19.6.2 Interlocked
19.6.3 Monitor类
19.6.4 等待句柄
19.6.5 Mutex类
19.6.6 Semaphore类
19.6.7 Events类
19.6.8 ReaderWriterLockSlim
19.7 Timer类
19.8 COM单元
19.9 基于事件的异步模式
19.9.1 BackgroundWorker类
19.9.2 激活取消功能
19.9.3 激活进度功能
19.9.4 创建基于事件的异步组件
19.10 小结
第20章 安全性
20.1 身份验证和授权
20.1.1 标识和Principal
20.1.2 角色
20.1.3 声明基于角色的安全性
20.1.4 客户应用程序服务
20.2 加密
20.2.1 签名
20.2.2密钥的互换和安全传送
20.3 资源的访问控制
20.4 代码访问的安全性
20.4.1 权限
20.4.2 代码组
20.4.3 策略的级别：Machine、User和Enterprise
20.5 安全策略的管理
20.5.1 代码组和权限的管理
20.5.2 安全性的启用和禁用
20.5.3 代码组的创建
20.5.4 代码组的删除
20.5.5 代码组权限的更改
20.5.6 权限集的创建和应用
20.5.7 使用强名发布代码
20.5.8 使用证书发布代码
20.6 小结
第21章 本地化
21.1 System.Globalization命名空间
21.1.1 Unicode问题
21.1.2 文化和区域
21.1.3 使用文化
21.1.4 排序
21.2 资源
21.2.1 创建资源文件
21.2.2 资源文件生成器
21.2.3 ResourceWriter
21.2.4 使用资源文件
21.2.5 System.Resources命名空间
21.3 使用Visual Studio的Windows Forms本地化示例
21.3.1 编程修改文化
21.3.2 使用定制资源文件
21.3.3 资源的自动回退
21.3.4 外包翻译
21.4 用ASP . NET本地化
21.5 用WPF本地化
21.5.1 WPF应用程序
21.5.2 .NET资源
21.5.3 用XAML本地化
21.6 定制的资源读取器
21.6.1 创建DatabaseResourceReader类
21.6.2 创建DatabaseResourceSet类
21.6.3 创建DatabaseResource-Manager类
21.6.4 DatabaseResourceReader的客户应用程序
21.7 创建定制文化
21.8 小结
第22章 事务处理
22.1 概述
22.1.1 事务处理阶段
22.1.2 ACID属性
22.2 数据库和实体类
22.3 传统的事务处理
22.3.1 ADO . NET事务处理
22.3.2 System.EnterpriseServices
22.4 System.Transactions
22.4.1 可提交的事务处理
22.4.2 事务处理的升级
22.4.3 依赖的事务处理
22.4.4 环境事务处理
22.5隔离级别
22.6 定制资源管理器
22.7 Windows Vista和Windows Server 2008 的事务处理
22.8 小结
第23章 Windows服务
23.1 Windows服务
23.2 Windows服务的体系结构
23.2.1 服务程序
23.2.2 服务控制程序
23.2.3 服务配置程序
23.3 System.ServiceProcess命名空间
23.4 创建Windows服务
23.4.1 使用套接字的类库
23.4.2 TcpClient示例
23.4.3 Windows服务项目
23.4.4 线程和服务
23.4.5 服务的安装
23.4.6 安装程序
23.5 服务的监视和控制
23.5.1 MMC计算机管理
23.5.2net.exe
23.5.3sc.exe
23.5.4 Visual Studio Server Explorer
23.5.5 ServiceController类
23.6 故障排除
23.6.1 交互式服务
23.6.2 事件日志
23.7 电源事件
23.8 小结
第24章 互操作性
24.1 .NET和COM
24.1.1元数据
24.1.2 释放内存
24.1.3 接口
24.1.4 方法绑定
24.1.5 数据类型
24.1.6 注册
24.1.7 线程
24.1.8 错误处理
24.1.9 事件处理
24.2 编组
24.3 在.NET客户程序中使用COM组件
24.3.1 创建COM组件
24.3.2 创建Runtime Callable Wrapper
24.3.3 使用RCW
24.3.4 可交互操作的主程序集
24.3.5 线程问题
24.3.6 添加连接点
24.3.7 在Windows窗体中使用ActiveX控件
24.3.8 在ASP . NET中使用COM对象
24.4 在COM客户程序中使用.NET组件
24.4.1 COM Callable Wrapper
24.4.2 创建.NET组件
24.4.3 创建类型库
24.4.4 COM互操作特性
24.4.5 COM注册
24.4.6 创建COM客户程序
24.4.7 添加连接点
24.4.8 用sink对象创建客户程序
24.4.9 在Internet Explorer中运行Windows窗体控件
24.5 平台调用
24.6 小结
第Ⅳ部分 数 据
第25章 文件和注册表操作
25.1 管理文件系统
25.1.1 表示文件和文件夹的.NET类
25.1.2 Path类
25.1.3 示例：文件浏览器
25.2 移动、复制和删除文件
25.2.1 FilePropertiesAndMovement示例
25.2.2 示例FilePropertiesAnd-Movement的代码
25.3 读写文件
25.3.1 读取文件
25.3.2 写入文件
25.3.3 流
25.3.4 缓存的流
25.3.5 使用FileStream类读写二进制文件
25.3.6 读写文本文件
25.4 读取驱动器信息
25.5 文件的安全性
25.5.1 从文件中读取ACL
25.5.2 从目录中读取ACL
25.5.3 添加和删除文件中的ACL项
25.6 读写注册表
25.6.1 注册表
25.6.2 .NET注册表类
25.6.3 SelfPlacingWindow示例
25.7 读写独立存储器
25.8 小结
第26章 .NET数据访问
26.1 ADO . NET概述
26.1.1 命名空间
26.1.2 共享类
26.1.3 数据库特定的类
26.2 使用数据库连接
26.2.1 管理连接字符串
26.2.2 高效地使用连接
26.2.3 事务处理
26.3 命令
26.3.1 执行命令
26.3.2 调用存储过程
26.4 快速数据访问：数据读取器
26.5 管理数据和关系：DataSet类
26.5.1 数据表
26.5.2 数据列
26.5.3 数据关系
26.5.4 数据约束
26.6 XML模式：用XSD生成代码
26.7 填充数据集
26.7.1 用数据适配器来填充DataSet
26.7.2 从XML中给数据集填充数据
26.8 保存对数据集的修改
26.8.1 通过数据适配器进行更新
26.8.2 写入XML输出结果
26.9 使用ADO . NET
26.9.1 分层开发
26.9.2 生成SQL Server的键
26.9.3 命名约定
26.10 小结
第27章 LINQ to SQL
27.1 LINQ to SQL和Visual Studio 2008
27.1.1 使用LINQ to SQL调用Products表——创建控制台应用程序
27.1.2 添加LINQ to SQL类
27.1.3 O/R设计器概述
27.1.4 创建Product对象
27.2 对象映射到LINQ对象上
27.2.1 DataContext对象
27.2.2 Table对象
27.3 不使用O/R设计器工作
27.3.1 创建自己的定制对象
27.3.2 用定制的对象和LINQ进行查询
27.3.3 用查询限制所调用的列
27.3.4 使用列名
27.3.5 创建自己的DataContext对象
27.4 定制对象和O/R设计器
27.5 查询数据库
27.5.1 使用查询表达式
27.5.2 查询表达式
27.5.3 使用表达式过滤
27.5.4 连接
27.5.5 组合数据项
27.6 存储过程
27.7 小结
第28章 处理XML
28.1 .NET支持的XML标准
28.2 System.Xml命名空间
28.3 使用System.Xml类
28.4 读写流格式的XML
28.4.1 使用 XmlReader类
28.4.2 使用XmlReader类进行验证
28.4.3 使用XmlWriter类
28.5 在.NET中使用DOM
28.6 使用XPathNavigator
28.6.1 System.Xml.XPath命名空间
28.6.2 System.Xml.Xsl命名空间
28.6.3 调试XSLT
28.7 XML和ADO . NET
28.7.1 将ADO . NET数据转换为XML文档
28.7.2 把XML文档转换为ADO . NET数据
28.8 在XML中串行化对象
28.9 小结
第29章 LINQ to XML
29.1 LINQ to XML和.NET 3.5
29.1.1 创建XML文档的新对象
29.1.2 Visual Basic 2008开辟了另一条道路
29.1.3 命名空间和前缀
29.2 .NET Framework 3.5中的新XML对象
29.2.1 XDocument对象
29.2.2 XElement对象
29.2.3 XNamespace对象
29.2.4 XComment对象
29.2.5 XAttribute对象
29.3 使用LINQ查询XML文档
29.3.1 查询静态的XML文档
29.3.2 查询动态的XML文档
29.4 处理XML文档
29.4.1 读取XML文档
29.4.2 写入XML文档
29.5 使用LINQ to SQL和LINQto XML
29.5.1 建立LINQ to SQL组件
29.5.2 查询数据库，输出XML
29.6 小结
第30章 .NET编程和SQL Server
30.1 .NET运行库的主机
30.2 Microsoft.SqlServer.Server
30.3 用户定义的类型
30.3.1 创建UDT
30.3.2 使用UDT
30.3.3 在客户端代码中使用UDT
30.4 用户定义的合计函数
30.4.1 创建用户定义的合计函数
30.4.2 使用用户定义的合计函数
30.5 存储过程
30.5.1 创建存储过程
30.5.2 使用存储过程
30.6 用户定义的函数
30.6.1 创建用户定义的函数
30.6.2 使用用户定义的函数
30.7 触发器
30.7.1 创建触发器
30.7.2 使用触发器
30.8 XML数据类型
30.8.1 包含XML数据的表
30.8.2 读取XML值
30.8.3 数据的查询
30.8.4 XML数据修改语言(XML DML)
30.8.5 XML索引
30.8.6强类型化的XML
30.9 小结
第Ⅴ部分 显示
第31章 Windows窗体
31.1 创建Windows窗体应用程序类层次结构
31.2 Control类
31.2.1 大小和位置
31.2.2 外观
31.2.3 用户交互操作
31.2.4 Windows功能
31.2.5 杂项功能
31.3 标准控件和组件
31.3.1Button控件
31.3.2 CheckBox控件
31.3.3 RadioButton控件
31.3.4 ComboBox控件、ListBox控件和CheckedListBox控件
31.3.5DateTimePicker控件
31.3.6 ErrorProvider组件
31.3.7 HelpProvider组件
31.3.8 ImageList组件
31.3.9Label控件
31.3.10ListView控件
31.3.11PictureBox控件
31.3.12 ProgressBar控件
31.3.13TextBox控件、RichTextBox控件与MaskedTextBox控件
31.3.14 Panel控件
31.3.15 FlowLayoutPanel和TableLayoutPanel控件
31.3.16 SplitContainer控件
31.3.17 TabControl控件和TabPages控件
31.3.18 ToolStrip控件
31.3.19MenuStrip控件
31.3.20 ContextMenuStrip控件
31.3.21 ToolStripMenuItem控件
31.3.22 ToolStripManager类
31.3.23 ToolStripContainer控件
31.4 窗体
31.4.1 Form类
31.4.2 多文档界面
31.4.3 定制控件
31.5 小结
第32章 数据绑定
32.1 DataGridView控件
32.1.1 显示列表数据
32.1.2 数据源
32.2 DataGridView类的层次结构
32.3 数据绑定
32.3.1 简单的绑定
32.3.2 数据绑定对象
32.4 Visual Studio和数据访问
32.4.1 创建一个连接
32.4.2 选择数据
32.4.3 更新数据源
32.4.4 其他常见的要求
32.5 小结
第33章 使用GDI+绘图
33.1 理解绘图规则
33.1.1 GDI和GDI+
33.1.2 绘制图形
33.1.3 使用OnPaint()绘制图形
33.1.4 使用剪切区域
33.2 测量坐标和区域
33.2.1 Point和PointF结构
33.2.2 Size和SizeF结构
33.2.3 Rectangle和RectangleF结构
33.2.4 Region
33.3 调试须知
33.4 绘制可滚动的窗口
33.5 世界、页面和设备坐标
33.6 颜色
33.6.1 红绿蓝(RGB)值
33.6.2 命名的颜色
33.6.3 图形显示模式和安全的调色板
33.6.4 安全调色板
33.7画笔和钢笔
33.7.1 画笔
33.7.2 钢笔
33.8 绘制图形和线条
33.9 显示图像
33.10 处理图像时的问题
33.11 绘制文本
33.12 简单的文本示例
33.13字体和字体系列
33.14 示例：枚举字体系列
33.15 编辑文本文档：CapsEditor示例
33.15.1 Invalidate()方法
33.15.2 计算项和文档的大小
33.15.3 OnPaint()
33.15.4坐标转换
33.15.5 响应用户的输入
33.16 打印
33.17 小结
第34章 Windows Presentation Foundation
34.1 概述
34.1.1 XAML
34.1.2 设计人员和开发人员的合作
34.1.3 类层次结构
31.1.4 命名空间
34.2 形状
34.3 变换
34.4笔刷
34.4.1 SolidColorBrush
34.4.2 LinearGradientBrush
34.4.3 RadialGradientBrush
34.4.4 DrawingBrush
34.4.5 ImageBrush
34.4.6 VisualBrush
34.5 控件
34.5.1 简单控件
34.5.2 内容控件
34.5.3 有标题的内容控件
34.5.4 项控件
34.5.5 带标题的项控件
34.6 布局
34.6.1 StackPanel
34.6.2 WrapPanel
34.6.3 Canvas
34.6.4 DockPanel
34.6.5 Grid
34.7 事件处理
34.8 样式、模板和资源
34.8.1 样式
34.8.2 资源
34.8.3 创建列表框的样式
34.9 小结
第35章 高级WPF
35.1 数据绑定
35.1.1 概述
35.1.2 用XAML绑定
35.1.3 简单对象的绑定
35.1.4 对象数据提供程序
35.1.5 列表绑定
35.1.6 绑定到XML上
35.1.7 绑定的验证
35.2 命令绑定
35.3 动画
35.3.1时间线
35.3.2 触发器
35.3.3 故事板1
35.4 在WPF中添加3D特性
35.5 Windows窗体集成
35.5.1 Windows窗体中的WPF控件
35.5.2 WPF应用程序中的Windows窗体控件
35.6 WPF浏览器应用程序
35.7 小结
第36章插件
36.1 System.AddIn体系结构
36.1.1 插件的问题
36.1.2 管道体系结构
36.1.3 发现
36.1.4 激活和隔离
36.1.5 合同
36.1.6 生存期
36.1.7 版本问题
36.2 插件示例
36.2.1 计算器合同
36.2.2 计算器插件视图
36.2.3 计算器插件适配器
36.2.4 计算器插件
36.2.5 计算器主机视图
36.2.6 计算机主机适配器
36.2.7 计算器主机
36.2.8 其他插件
36.3 小结
第37章ASP . NET页面
37.1ASP . NET概述
37.2ASP . NETWeb窗体
37.2.1ASP . NET代码模型
37.2.2ASP . NET服务器控件
37.3 ADO . NET和数据绑定
37.3.1 更新会议登记应用程序
37.3.2 数据绑定的更多内容
37.4 应用程序配置
37.5 小结
第38章ASP . NET开发
38.1 用户控件和定制控件
38.1.1 用户控件
38.1.2 PCSDemoSite中的用户控件
38.1.3 定制控件
38.2 Master页面
38.2.1 在Web页面中访问Master页面
38.2.2 嵌套的Master页面
38.2.3 PCSDemoSite中的Master页面
38.3 站点导航
38.4 安全性
38.4.1 使用安全向导添加Forms身份验证功能
38.4.2 实现登录系统
38.4.3 Web 登录服务器控件
38.4.4 保护目录
38.4.5 PCSDemoSite中的安全性
38.5 主题
38.5.1 把主题应用于页面
38.5.2 定义主题
38.5.3 PCSDemoSite中的主题
38.6 Web Parts
38.6.1 Web Parts应用程序组件
38.6.2 Web Parts示例
38.7 小结
第39章ASP . NETAJAX
39.1 Ajax的概念
39.2ASP . NETAJAX
39.2.1 核心功能
39.2.2ASP . NETAJAX Control Toolkit
39.3 使用ASP . NETAJAX
39.3.1ASP . NETAJAX网站示例
39.3.2 支持ASP . NETAJAX的网站配置
39.3.3 添加ASP . NETAJAX功能
39.3.4 使用AJAX库
39.4 小结
第40章 Visual Studio Tools for Office
40.1 VSTO概述
40.1.1 项目类型
40.1.2 项目特性
40.2 VSTO基础
40.2.1 Office对象模型
40.2.2 VSTO命名空间
40.2.3 主机项和主机控件
40.2.4 基本的VSTO项目结构
40.2.5 Globals类
40.2.6 事件处理
40.3 建立VSTO解决方案
40.3.1 管理应用程序级插件
40.3.2 与应用程序和文档交互操作
40.3.3 UI的定制
40.4 示例应用程序
40.5 VBA交互操作性
40.6 小结
第Ⅵ部分 通信
第41章 访问Internet
41.1 WebClient类
41.1.1 下载文件
41.1.2 基本的Web客户示例
41.1.3 上传文件
41.2 WebRequest类和WebResponse类
41.3 把输出结果显示为HTML页面
41.3.1 在应用程序中进行简单的Web浏览
41.3.2 启动Internet Explorer实例
41.3.3 给应用程序提供更多的IE类型特性
41.3.4 使用WebBrowser控件打印
41.3.5 显示请求页面的代码
41.3.6 WebRequest和WebResponse的层次结构
41.4 实用工具类
41.4.1 URI
41.4.2 IP地址和DNS名称
41.5 较低层的协议
41.6 小结
第42章 Windows Communication Foundation
42.1 WCF概述
42.1.1 SOAP
42.1.2 WSDL
42.1.3 JSON
42.2 简单的服务和客户
42.2.1 服务合同
42.2.2 服务的实现
42.2.3 WCF服务主机和WCF测试客户机
42.2.4 定制服务主机
42.2.5 WCF客户程序
42.2.6 诊断
42.3 合同
42.3.1 数据合同
42.3.2 版本问题
42.3.3 服务合同
42.3.4 消息合同
42.4 服务的实现
42.5绑定
42.6 主机
42.6.1 定制主机
42.6.2 WAS主机
42.7 客户程序
42.8 双向通信
42.9 小结
第43章 Windows Workflow Foundation
43.1 Hello World示例
43.2 活动
43.2.1 IfElseActivity
43.2.2 ParallelActivity
43.2.3 CallExternalMethodActivity
43.2.4 DelayActivity
41.2.5 ListenActivity
43.2.6 活动的执行模型
43.3 定制的活动
43.3.1 活动的有效性验证
43.3.2 主题和设计器
43.3.3 ActivityToolboxItem和图标
43.3.4 定制的复合活动
43.4 工作流
43.4.1 系列工作流
43.4.2 状态机工作流
43.4.3 给工作流传送参数
43.4.4 从工作流中返回结果
43.4.5 将参数绑定到活动上
43.5 工作流运行库
43.6 工作流服务
43.6.1 持续服务
43.6.2 跟踪服务
43.6.3 定制服务
43.7 与WCF集成
43.8 保存工作流
43.9 工作流设计器
43.10 小结
第44章 Enterprise Services
44.1 概述
44.1.1 Enterprise Services简史
44.1.2 使用Enterprise Services的场合
44.1.3 环境
44.1.4 自动的事务处理
44.1.5 分布式事务处理
44.1.6 对象池
44.1.7 基于角色的安全性
44.1.8 排队的组件
44.1.9 松散藕合的事件
44.2 创建简单的COM+应用程序
44.2.1 类ServicedComponent
44.2.2 标记程序集
44.2.3 程序集的属性
44.2.4 创建组件
44.3 部署
44.3.1 自动部署
44.3.2 手工部署
44.3.3 创建安装软件包
44.4 Component Services浏览器
44.5 客户应用程序
44.6 事务处理
44.6.1 事务处理的属性
44.6.2 事务处理的结果
44.7 示例应用程序
44.7.1 实体类
44.7.2 OrderControl组件
44.7.3 OrderData组件
44.7.4 OrderLineData组件
44.7.5 客户应用程序
44.8 集成WCF和Enterprise Services
44.8.1 WCF服务Fa?ade
44.8.2 客户程序
44.9 小结
第45章 消息队列
45.1 概述
45.1.1 使用Message Queuing的场合
45.1.2 Message Queuing特性
45.2 Message Queuing产品
45.3 Message Queuing结构
45.3.1 消息
45.3.2 消息队列
45.4 Message Queuing管理工具
45.4.1 创建消息队列
45.4.2 消息队列属性
45.5 Message Queuing的编程实现
45.5.1 创建消息队列
45.5.2 查找队列
45.5.3 打开已知的队列
45.5.4 发送消息
45.5.5 接收消息
45.6 课程订单应用程序
45.6.1 课程订单类库
45.6.2 课程订单消息发送程序
45.6.3 发送优先级和可恢复的消息
45.6.4 课程订单消息接收程序
45.7 接收结果
45.7.1 确认队列
45.7.2 响应队列
45.8 事务队列
45.9 消息队列和WCF
45.9.1 带数据合同的实体类
45.9.2 WCF服务合同
45.9.3 WCF消息接收程序
45.9.4 WCF消息发送程序
45.10 消息队列的安装
45.11 小结
第46章 目录服务
46.1 Active Directory的体系结构
46.1.1 特性
46.1.2 Active Directory的概念
46.1.3 Active Directory数据的特性
46.1.4 模式
46.2 Active Directory的管理工具
46.2.1 Active Directory Users and Computers工具
46.2.2 ADSI Edit工具
46.3 Active Directory编程
46.3.1 System.DirectoryServices命名空间中的类
46.3.2 绑定
46.3.3 获取目录项
46.3.4 对象集合
46.3.5 缓存
46.3.6 创建新对象
46.3.7 更新目录项
46.3.8 访问内部的ADSI对象
46.3.9 在Active Directory中搜索
46.4 搜索用户对象
46.4.1 用户界面
46.4.2 获取模式命名环境
46.4.3 获取User类的属性名
46.4.4 搜索用户对象
46.5 账户管理
46.5.1 显示用户信息
46.5.2 创建用户
46.5.3 重置密码
46.5.4 创建组
46.5.5 在组中添加用户
46.5.6 查找用户
46.6 DSML
46.6.1 命名空间System.Directory-Services.Protocols中的类
46.6.2 用DSML搜索Active Directory对象
46.7 小结
第47章 对等网络
47.1 P2P概述
47.1.1 客户机-服务器体系结构
47.1.2 P2P体系结构
47.1.3 P2P体系结构的挑战
47.1.4 P2P术语
47.1.5 P2P解决方案
47.2 Microsoft Windows Peer-to-Peer Networking
47.2.1 Peer Name Resolution Protocol(PNRP)
47.2.2 People Near Me
47.3 建立P2P应用程序
47.3.1 System . Net.PeerToPeer
47.3.2 System . Net.PeerToPeer.Collaboration
47.4 小结
第48章 Syndication
48.1 System.ServiceModel.Syndication命名空间概述
48.2 Syndication阅读器
48.3 提供SyndicationFeed
48.4 小结
第Ⅶ部分 附录
附录AADO . NET Entity Framework
附录B C#、Visual Basic和C++/CLI
附录C Windows Vista和Windows Server 2008
……
序言
对于开发人员来说，把C#语言及其相关环境．NET Framework描述为多年来最重要的新技术一点都不夸张。．NET提供了一种新环境。在这个环境中，可以开发出运行在Windows上的几乎所有应用程序，而C#是专门用于．NET的新编程语言。例如，使用C#可以编写出动态Web页面、XML Web服务、分布式应用程序的组件、数据库访问组件、传统的Windows桌面应用程序，甚或可以联机/脱机运行的新型智能客户应用程序。本书介绍．NET Framework 3．5版。如果读者使用1．0、1．1、2．0或3．0版本编码，本书的一些章节就不适用。本书将标注出只适用于．NETFramework 3．5的新增内容。
不要被．NET这个名称所愚弄，这个名称仪强调Microsoft相信分布式应用程序是未来的趋势，即处理过程分布在客户机和服务器上，但C#不仅仅是编写Internet或与网络相关的应用程序的一种语言，它还提供了一种编写Windows平台上几乎任何类型的软件或组件的方式。另外，C#和．NET都对编写程序的方式进行了革新，更易于实现在Windows上的编程。
这是一个相当重要的声明。毕竟，我们都知道计算机技术的发展速度非常快，每年Microsoft都会推出新软件、新的编程工具或Windows的新版本，并宣称这些对开发人员都非常有用，.NET和C#也不例外。
.NET和C#的重要性
为了理解.NET的重要性，了解一下近10年来出现的许多Windows技术的本质，会有一定的帮助。尽管所有的Windows操作系统在表面上看来完全不同，但从Windows 3．1（1992年）到Windows Seirver 2008，在内核上都有相同的WindowsAPI。在我们转而使用Windows的新版本时，API中增加了非常多的新功能，但这是一个演化和扩展API的过程，并非替换它。
开发Windows软件所使用的许多技术和架构也是这样。例如，COM（Component ObjectModel，组件对象模型）是作为OLE（Object Linking and Embedding，对象链接和嵌入）开发出来的。那时，它在很大程度上仅是把不同类型的Office文档链接在一起，所以利用它可以把一个小Excel电子表格放在Word文档中。之后，它逐步演化为COM、DCOM（Dist~"ibuted COM，分布式组件对象模型）和最终的COM+。COM+是一种复杂的技术，它是几乎所有组件通信方式的基础，实现了事务处理、消息传输服务和对象池。
Microsoft选择这条道路的原因非常明显：它关注向后的兼容性。在过去的这些年中，第三方厂商编写了相当多的Windows软件，如果Microsoft每次都引入一项不遵循现有编码规则的新技术，Windows就不会获得今天的成功。
向后兼容性是Windows技术的极其重要的特性，也是Windows平台的一个长处。但它有一个很大的缺点：每次某项技术进行演化增加了新功能后，都会比它以前更复杂。
作者简介
译者
李铭，信息管理专业硕士，拥有近8年的系统开发经验，曾开发过监考系统、宽带教学系统、人员管理系统和综合业务系统等，现就职于某部队研究所，从事.NET、Oracle和Linux等方面的开发和管理工作，曾发表过多篇计算机专业论文，也翻译和编写过几部著作。
审校
黄静，计算机专业博士，在程序设计、软件工程和网络安全等方面有着多年的研究和实战经验，曾为.NET技术在国内的推广作出了重要贡献，翻译和发表了多篇有关.NET的技术文档或文章。