C#经典实例(第4版)
C#经典实例(第4版)
O'Reilly Media, Inc. 介绍
读者对象
硬件和软件要求
平台说明
内容结构
未涉及的内容
关于代码
使用代码示例
Safari®在线图书
Jay Hilyard的致谢
Steve Teilhet的致谢
1 类和泛型
1.0 简介
1.1 创建联合类型的结构
1.1.1 问题
1.1.2 解决方案
1.1.3 讨论
1.1.4 参考
1.2 使类型可排序
1.2.1 问题
1.2.2 解决方案
1.2.3 讨论
1.2.4 参考
1.3 使类型可查找
1.3.1 问题
1.3.2 解决方案
1.3.3 讨论
1.3.4 参考
1.4 从一个方法返回多个数据项
1.4.1 问题
1.4.2 解决方案
1.4.3 讨论
1.4.4 参考
1.5 解析命令行参数
1.5.1 问题
1.5.2 解决方案
1.5.3 讨论
1.5.4 参考
1.6 在运行时初始化常量字段
1.6.1 问题
1.6.2 解决方案
1.6.3 讨论
1.6.4 参考
1.7 构建可克隆的类
1.7.1 问题
1.7.2 解决方案
1.7.3 讨论
1.7.4 参考
1.8 确保对象的处置
1.8.1 问题
1.8.2 解决方案
1.8.3 讨论
1.8.4 参考
1.9 确定何时何处使用泛型
1.9.1 问题
1.9.2 解决方案
1.9.3 讨论
1.9.4 参考
1.10 理解泛型类型
1.10.1 问题
1.10.2 解决方案
1.10.3 讨论
1.10.4 参考
1.11 反转有序列表中的内容
1.11.1 问题
1.11.2 解决方案
1.11.3 讨论
1.11.4 参考
1.12 约束类型参数
1.12.1 问题
1.12.2 解决方案
1.12.3 讨论
1.12.4 参考
1.13 将泛型变量初始化为默认值
1.13.1 问题
1.13.2 解决方案
1.13.3 讨论
1.13.4 参考
1.14 向生成的实体中添加钩子
1.14.1 问题
1.14.2 解决方案
1.14.3 讨论
1.14.4 参考
1.15 控制如何触发多播委托中的一个委托
1.15.1 问题
1.15.2 解决方案
1.15.3 讨论
1.15.4 参考
1.16 在C 中使用闭包
1.16.1 问题
1.16.2 解决方案
1.16.3 讨论
1.16.4 参考
1.17 使用函数对象在列表中执行多种操作
1.17.1 问题
1.17.2 解决方案
1.17.3 讨论
1.17.4 参考
1.18 控制结构类型字段初始化
1.18.1 问题
1.18.2 解决方案
1.18.3 讨论
1.18.4 参考
1.19 以更简洁的方式检查null值
1.19.1 问题
1.19.2 解决方案
1.19.3 讨论
1.19.4 参考
2 集合、枚举器和迭代器
2.0 简介
2.1 寻找List中的重复数据项
2.1.1 问题
2.1.2 解决方案
2.1.3 讨论
2.1.4 参考
2.2 保持List有序
2.2.1 问题
2.2.2 解决方案
2.2.3 讨论
2.2.4 参考
2.3 对Dictionary的键和/或值排序
2.3.1 问题
2.3.2 解决方案
2.3.3 讨论
2.3.4 参考
2.4 创建具有最小值和最大值边界的Dictionary
2.4.1 问题
2.4.2 解决方案
2.4.3 讨论
2.4.4 参考
2.5 在应用程序会话间持久化一个集合
2.5.1 问题
2.5.2 解决方案
2.5.3 讨论
2.5.4 参考
2.6 测试Array或List中的每个元素
2.6.1 问题
2.6.2 解决方案
2.6.3 讨论
2.6.4 参考
2.7 创建自定义枚举器
2.7.1 问题
2.7.2 解决方案
2.7.3 讨论
2.7.4 参考
2.8 处理finally语句块和迭代器
2.8.1 问题
2.8.2 解决方案
2.8.3 讨论
2.8.4 参考
2.9 在类中实现嵌套的foreach功能
2.9.1 问题
2.9.2 解决方案
2.9.3 讨论
2.9.4 参考
2.10 使用线程安全的字典进行并发访问,不手动加锁
2.10.1 问题
2.10.2 解决方案
2.10.3 讨论
2.10.4 参考
3 数据类型
3.1 把二进制数据编码为base64格式
3.1.1 问题
3.1.2 解决方案
3.1.3 讨论
3.1.4 参考
3.2 解码base64编码的二进制数据
3.2.1 问题
3.2.2 解决方案
3.2.3 讨论
3.2.4 参考
3.3 把作为byte[]返回的字符串转换为字符串
3.3.1 问题
3.3.2 解决方案
3.3.3 讨论
3.3.4 参考
3.4 把字符串传递给只接受byte[]的方法
3.4.1 问题
3.4.2 解决方案
3.4.3 讨论
3.4.4 参考
3.5 确定一个字符串是否为有效的数字
3.5.1 问题
3.5.2 解决方案
3.5.3 讨论
3.5.4 参考
3.6 舍入浮点值
3.6.1 问题
3.6.2 解决方案
3.6.3 讨论
3.6.4 参考
3.7 选择一种舍入算法
3.7.1 问题
3.7.2 解决方案
3.7.3 讨论
3.7.4 参考
3.8 安全地执行窄化数据转换
3.8.1 问题
3.8.2 解决方案
3.8.3 讨论
3.8.4 参考
3.9 测试有效的枚举值
3.9.1 问题
3.9.2 解决方案
3.9.3 讨论
3.10 在位掩码中使用枚举成员
3.10.1 问题
3.10.2 解决方案
3.10.3 讨论
3.11 确定是否设置了一个或多个枚举标志
3.11.1 问题
3.11.2 解决方案
3.11.3 讨论
4 语言集成查询和lambda表达式
4.0 简介
4.1 查询消息队列
4.1.1 问题
4.1.2 解决方案
4.1.3 讨论
4.1.4 参考
4.2 对数据使用集合语义
4.2.1 问题
4.2.2 解决方案
4.2.3 讨论
4.2.4 参考
4.3 利用LINQ to SQL重用参数化查询
4.3.1 问题
4.3.2 解决方案
4.3.3 讨论
4.3.4 参考
4.4 以文化敏感的方式对结果排序
4.4.1 问题
4.4.2 解决方案
4.4.3 讨论
4.4.4 参考
4.5 添加用于LINQ的函数式扩展
4.5.1 问题
4.5.2 解决方案
4.5.3 讨论
4.5.4 参考
4.6 跨数据库执行查询和联接
4.6.1 问题
4.6.2 解决方案
4.6.3 讨论
4.6.4 参考
4.7 利用LINQ查询配置文件
4.7.1 问题
4.7.2 解决方案
4.7.3 讨论
4.7.4 参考
4.8 从数据库直接创建XML文件
4.8.1 问题
4.8.2 解决方案
4.8.3 讨论
4.8.4 参考
4.9 有选择地输出查询结果
4.9.1 问题
4.9.2 解决方案
4.9.3 讨论
4.9.4 参考
4.10 将LINQ用于不支持IEnumerable的集合
4.10.1 问题
4.10.2 解决方案
4.10.3 讨论
4.10.4 参考
4.11 执行高级接口查找
4.11.1 问题
4.11.2 解决方案
4.11.3 讨论
4.11.4 参考
4.12 使用lambda表达式
4.12.1 问题
4.12.2 解决方案
4.12.3 讨论
4.12.4 参考
4.13 在lambda表达式中使用不同的参数修饰符
4.13.1 问题
4.13.2 解决方案
4.13.3 讨论
4.13.4 参考
4.14 用并行来加速LINQ操作
4.14.1 问题
4.14.2 解决方案
4.14.3 讨论
4.14.4 参考
5 调试和异常处理
5.0 简介
5.1 知道何时捕获并重新引发异常
5.1.1 问题
5.1.2 解决方案
5.1.3 讨论
5.2 处理通过反射调用的方法引发的异常
5.2.1 问题
5.2.2 解决方案
5.2.3 讨论
5.2.4 参考
5.3 创建新的异常类型
5.3.1 问题
5.3.2 解决方案
5.3.3 讨论
5.3.4 参考
5.4 在首次异常上中断
5.4.1 问题
5.4.2 解决方案
5.4.3 参考
5.5 处理从异步委托中引发的异常
5.5.1 问题
5.5.2 解决方案
5.5.3 讨论
5.5.4 参考
5.6 利用Exception.Data为异常提供所需的额外信息
5.6.1 问题
5.6.2 解决方案
5.6.3 讨论
5.6.4 参考
5.7 在WinForms应用程序中处理未经处理的异常
5.7.1 问题
5.7.2 解决方案
5.7.3 讨论
5.7.4 参考
5.8 在WPF应用程序中处理未经处理的异常
5.8.1 问题
5.8.2 解决方案
5.8.3 讨论
5.8.4 参考
5.9 确定一个进程是否停止了响应
5.9.1 问题
5.9.2 解决方案
5.9.3 讨论
5.9.4 参考
5.10 在应用程序中使用事件日志
5.10.1 问题
5.10.2 解决方案
5.10.3 讨论
5.10.4 参考
5.11 监视事件日志中的特定条目
5.11.1 问题
5.11.2 解决方案
5.11.3 讨论
5.11.4 参考
5.12 实现一个简单的性能计数器
5.12.1 问题
5.12.2 解决方案
5.12.3 讨论
5.12.4 参考
5.13 为类创建自定义的调试显示
5.13.1 问题
5.13.2 解决方案
5.13.3 讨论
5.13.4 参考
5.14 跟踪异常从何而来
5.14.1 问题
5.14.2 解决方案
5.14.3 讨论
5.14.4 参考
5.15 在异步情境下处理异常
5.15.1 问题
5.15.2 解决方案
5.15.3 讨论
5.15.4 参考
5.16 有选择地处理异常
5.16.1 问题
5.16.2 解决方案
5.16.3 讨论
5.16.4 参考
6 反射和动态编程
6.0 简介
6.1 列出引用的程序集
6.1.1 问题
6.1.2 解决方案
6.1.3 讨论
6.1.4 参考
6.2 确定程序集中的类型特征
6.2.1 问题
6.2.2 解决方案
6.2.3 讨论
6.2.4 参考
6.3 确定继承特征
6.3.1 问题
6.3.2 解决方案
6.3.3 讨论
6.3.4 参考
6.4 使用反射调用成员
6.4.1 问题
6.4.2 解决方案
6.4.3 讨论
6.4.4 参考
6.5 访问局部变量信息
6.5.1 问题
6.5.2 解决方案
6.5.3 讨论
6.5.4 参考
6.6 创建一个泛型类型
6.6.1 问题
6.6.2 解决方案
6.6.3 讨论
6.6.4 参考
6.7 使用dynamic与使用object
6.7.1 问题
6.7.2 解决方案
6.7.3 讨论
6.7.4 参考
6.8 动态构建对象
6.8.1 问题
6.8.2 解决方案
6.8.3 讨论
6.8.4 参考
6.9 使对象可扩展
6.9.1 问题
6.9.2 解决方案
6.9.3 讨论
6.9.4 参考
7 正则表达式
7.0 简介
7.1 从MatchCollection中提取组
7.1.1 问题
7.1.2 解决方案
7.1.3 讨论
7.1.4 参考
7.2 验证正则表达式的语法
7.2.1 问题
7.2.2 解决方案
7.2.3 讨论
7.3 增强基本的字符串替换函数
7.3.1 问题
7.3.2 解决方案
7.3.3 讨论
7.3.4 参考
7.4 实现一个更好的分词器
7.4.1 问题
7.4.2 解决方案
7.4.3 讨论
7.4.4 参考
7.5 返回匹配所在的整行内容
7.5.1 问题
7.5.2 解决方案
7.5.3 讨论
7.5.4 参考
7.6 找到特定次数的匹配
7.6.1 问题
7.6.2 解决方案
7.6.3 讨论
7.6.4 参考
7.7 使用常见模式
7.7.1 问题
7.7.2 解决方案
7.7.3 讨论
7.7.4 参考
8 文件系统I/O
8.0 简介
8.1 使用通配符查找目录和文件
8.1.1 问题
8.1.2 解决方案
8.1.3 讨论
8.1.4 参考
8.2 获取目录树
8.2.1 问题
8.2.2 解决方案
8.2.3 讨论
8.2.4 参考
8.3 解析路径
8.3.1 问题
8.3.2 解决方案
8.3.3 讨论
8.3.4 参考
8.4 启动并与控制台工具交互
8.4.1 问题
8.4.2 解决方案
8.4.3 讨论
8.4.4 参考
8.5 锁定文件的一部分
8.5.1 问题
8.5.2 解决方案
8.5.3 讨论
8.5.4 参考
8.6 等待文件系统中的动作发生
8.6.1 问题
8.6.2 解决方案
8.6.3 讨论
8.6.4 参考
8.7 比较两个可执行模块的版本信息
8.7.1 问题
8.7.2 解决方案
8.7.3 讨论
8.7.4 参考
8.8 查询系统上所有驱动器的信息
8.8.1 问题
8.8.2 解决方案
8.8.3 讨论
8.8.4 参考
8.9 压缩和解压缩文件
8.9.1 问题
8.9.2 解决方案
8.9.3 讨论
8.9.4 参考
9 网络和 Web
9.0 简介
9.1 处理Web服务器错误
9.1.1 问题
9.1.2 解决方案
9.1.3 讨论
9.1.4 参考
9.2 与Web服务器通信
9.2.1 问题
9.2.2 解决方案
9.2.3 讨论
9.2.4 参考
9.3 通过代理服务器
9.3.1 问题
9.3.2 解决方案
9.3.3 讨论
9.3.4 参考
9.4 从一个URL获取HTML
9.4.1 问题
9.4.2 解决方案
9.4.3 讨论
9.4.4 参考
9.5 使用Web浏览器控件
9.5.1 问题
9.5.2 解决方案
9.5.3 讨论
9.5.4 参考
9.6 以编程方式预构建一个ASP.NET网站
9.6.1 问题
9.6.2 解决方案
9.6.3 讨论
9.6.4 参考
9.7 为Web应用对数据进行转义和取消转义
9.7.1 问题
9.7.2 解决方案
9.7.3 讨论
9.7.4 参考
9.8 检查Web服务器的自定义错误页
9.8.1 问题
9.8.2 解决方案
9.8.3 讨论
9.8.4 参考
9.9 编写一个TCP服务器
9.9.1 问题
9.9.2 解决方案
9.9.3 讨论
9.9.4 参考
9.10 编写一个TCP客户端
9.10.1 问题
9.10.2 解决方案
9.10.3 讨论
9.10.4 参考
9.11 模拟表单执行
9.11.1 问题
9.11.2 解决方案
9.11.3 讨论
9.11.4 参考
9.12 通过HTTP传输数据
9.12.1 问题
9.12.2 解决方案
9.12.3 讨论
9.12.4 参考
9.13 使用命名管道进行通信
9.13.1 问题
9.13.2 解决方案
9.13.3 讨论
9.13.4 参考
9.14 以编程方式发送ping
9.14.1 问题
9.14.2 解决方案
9.14.3 讨论
9.14.4 参考
9.15 使用SMTP服务发送SMTP邮件
9.15.1 问题
9.15.2 解决方案
9.15.3 讨论
9.15.4 参考
9.16 使用套接字扫描机器的端口
9.16.1 问题
9.16.2 解决方案
9.16.3 讨论
9.16.4 参考
9.17 使用当前的互联网连接设置
9.17.1 问题
9.17.2 解决方案
9.17.3 讨论
9.17.4 参考
9.18 使用FTP传输文件
9.18.1 问题
9.18.2 解决方案
9.18.3 讨论
9.18.4 参考
10 XML
10.0 简介
10.1 以文档顺序读取和访问XML数据
10.1.1 问题
10.1.2 解决方案
10.1.3 讨论
10.1.4 参考
10.2 查询XML文档的内容
10.2.1 问题
10.2.2 解决方案
10.2.3 讨论
10.2.4 参考
10.3 验证XML
10.3.1 问题
10.3.2 解决方案
10.3.3 讨论
10.3.4 参考
10.4 检测对XML文档的修改
10.4.1 问题
10.4.2 解决方案
10.4.3 讨论
10.4.4 参考
10.5 处理XML字符串中的无效字符
10.5.1 问题
10.5.2 解决方案
10.5.3 讨论
10.5.4 参考
10.6 转换XML
10.6.1 问题
10.6.2 解决方案
10.6.3 讨论
10.6.4 参考
10.7 验证修改过的XML文档而无需重新加载
10.7.1 问题
10.7.2 解决方案
10.7.3 讨论
10.7.4 参考
10.8 扩展转换
10.8.1 问题
10.8.2 解决方案
10.8.3 讨论
10.8.4 参考
10.9 从现有XML文件批量获取架构
10.9.1 问题
10.9.2 解决方案
10.9.3 讨论
10.9.4 参考
10.10 将参数传递给转换
10.10.1 问题
10.10.2 解决方案
10.10.3 讨论
10.10.4 参考
11 安全
11.0 简介
11.1 加密和解密字符串
11.1.1 问题
11.1.2 解决方案
11.1.3 讨论
11.1.4 参考
11.2 加密和解密文件
11.2.1 问题
11.2.2 解决方案
11.2.3 讨论
11.2.4 参考
11.3 清理密码算法信息
11.3.1 问题
11.3.2 解决方案
11.3.3 讨论
11.3.4 参考
11.4 避免字符串在传输或静止时被篡改
11.4.1 问题
11.4.2 解决方案
11.4.3 讨论
11.4.4 参考
11.5 保证安全断言的安全
11.5.1 问题
11.5.2 解决方案
11.5.3 讨论
11.5.4 参考
11.6 验证是否已授予程序集特定权限
11.6.1 问题
11.6.2 解决方案
11.6.3 讨论
11.6.4 参考
11.7 最小化程序集的攻击面
11.7.1 问题
11.7.2 解决方案
11.7.3 讨论
11.7.4 参考
11.8 获得安全和/或审计信息
11.8.1 问题
11.8.2 解决方案
11.8.3 讨论
11.8.4 参考
11.9 授权或撤销对文件或注册表项的访问
11.9.1 问题
11.9.2 解决方案
11.9.3 讨论
11.9.4 参考
11.10 使用安全字符串保护字符串数据
11.10.1 问题
11.10.2 解决方案
11.10.3 讨论
11.10.4 参考
11.11 保护流数据
11.11.1 问题
11.11.2 解决方案
11.11.3 讨论
11.11.4 参考
11.12 加密web.config信息
11.12.1 问题
11.12.2 解决方案
11.12.3 讨论
11.12.4 参考
11.13 获得一个更安全的文件句柄
11.13.1 问题
11.13.2 解决方案
11.13.3 讨论
11.13.4 参考
11.14 保存密码
11.14.1 问题
11.14.2 解决方案
11.14.3 讨论
11.14.4 参考
12 线程、同步和并发
12.0 简介
12.1 创建每线程静态字段
12.1.1 问题
12.1.2 解决方案
12.1.3 讨论
12.1.4 参考
12.2 对类成员提供线程安全的访问
12.2.1 问题
12.2.2 解决方案
12.2.3 讨论
12.2.4 参考
12.3 避免沉默的线程终止
12.3.1 问题
12.3.2 解决方案
12.3.3 讨论
12.3.4 参考
12.4 在异步委托完成时获得通知
12.4.1 问题
12.4.2 解决方案
12.4.3 讨论
12.4.4 参考
12.5 私有化存储线程特定的数据
12.5.1 问题
12.5.2 解决方案
12.5.3 讨论
12.5.4 参考
12.6 使用信号量允许资源的多重访问
12.6.1 问题
12.6.2 解决方案
12.6.3 讨论
12.6.4 参考
12.7 使用互斥量同步多个进程
12.7.1 问题
12.7.2 解决方案
12.7.3 讨论
12.7.4 参考
12.8 使用事件协调线程
12.8.1 问题
12.8.2 解决方案
12.8.3 讨论
12.8.4 参考
12.9 在多线程间执行原子操作
12.9.1 问题
12.9.2 解决方案
12.9.3 讨论
12.9.4 参考
12.10 优化以读为主的访问
12.10.1 问题
12.10.2 解决方案
12.10.3 讨论
12.10.4 参考
12.11 使数据库请求更具扩展性
12.11.1 问题
12.11.2 解决方案
12.11.3 讨论
12.11.4 参考
12.12 以一定顺序运行任务
12.12.1 问题
12.12.2 解决方案
12.12.3 讨论
12.12.4 参考
13 工具箱
13.0 简介
13.1 处理操作系统关机、电源管理或用户会话变化
13.1.1 问题
13.1.2 解决方案
13.1.3 讨论
13.1.4 参考
13.2 控制系统服务
13.2.1 问题
13.2.2 解决方案
13.2.3 讨论
13.2.4 参考
13.3 列出加载一个程序集的进程
13.3.1 问题
13.3.2 解决方案
13.3.3 讨论
13.3.4 参考
13.4 使用本地工作站上的消息队列
13.4.1 问题
13.4.2 解决方案
13.4.3 讨论
13.4.4 参考
13.5 捕获标准输出流的输出
13.5.1 问题
13.5.2 解决方案
13.5.3 讨论
13.5.4 参考
13.6 捕获一个进程的标准输出
13.6.1 问题
13.6.2 解决方案
13.6.3 讨论
13.6.4 参考
13.7 在它自己的AppDomain中运行代码
13.7.1 问题
13.7.2 解决方案
13.7.3 讨论
13.7.4 参考
13.8 确定当前操作系统的操作系统和Service Pack版本
13.8.1 问题
13.8.2 解决方案
13.8.3 讨论
13.8.4 参考
关于封面
思维导图
防止博客图床图片失效,防止图片源站外链:
http://www.processon.com/chart_image/5e5a8b73e4b03627650ace3b.png)
思维导图在线编辑链接: