出版时间:2008-12 出版社:清华大学出版社 作者:(美)希尔雅德(Hilyard,J.),(美)特尔赫特(Teilhet,S.) 著,陈宗斌 等译 页数:699 译者:陈宗斌
Tag标签:无
前言
C#语言是Microsoft公司为推行.NET战略而发布的一种全新的编程语言。它是一种全新的、纯面向对象的编程语言,具有清晰明了的语法结构、优秀的编程开发环境和高效率的编译工具。C#语言从C++语言发展而来,继承了C++语言的所有优点,同时根据.NET战略的需要增强了自身的功能,抛弃了C++中各种不安全因素,从而使程序员能够更有效率地使用C#开发应用软件。另外,C#在许多方面与Java相似;Java程序员一旦学习了Framework SDK,他们在C#中就会有一种宾至如归的感觉。C#还非常适合于Visual Basic.NET程序员,当他们需要能够更多地控制代码执行的任务并且不想为此编写C++代码时就可以使用C#。本书侧重于解决C#程序员在开发应用程序时遇到的各类问题,并根此组织全书内容。这些解决方案称为秘诀;每个秘诀都包含一个问题,它的解决方案及相关信息的讨论,最后还提供了关于使用FCL中的类的详细信息的出处、针对这个主题的其他书籍、相关的文章以及其他秘诀。这种问题一答案格式提供了问题的完整解决方案,使得本书易于阅读和使用。几乎每个秘诀都包含一个完整的书面代码示例,展示了如何解决特定的问题,还讨论了底层技术的工作原理,并且根据需要列出了一些替代方法、限制条件及其他考虑事项。
内容概要
当你在使用C#3.0的过程中陷入困境而需要快速找到解决方案时,为什么要辛苦地读完一本教程呢?这本最畅销书现在提供了超过250个代码秘诀,针对的是C#程序员面临的常见和不那么常见的问题。本书添加了许多新秘诀,从以前版本继承来的大多数秘诀都经过了修订,以便帮助你利用C#3.0和.NET 3.5平台提供的能力——以及克服它们提出的挑战。本书用一整章的篇幅介绍了用于LINQ(语言级集成查询)的秘诀,并用额外两章介绍了使用扩展方法的秘诀,还介绍了lambda表达式、对象和集合初始化器、新的同步原语以及LINQ to XML等。本书中的每个秘诀都提供了对单个问题的解决方案,讨论了它为什么会工作,并且提供了查找额外信息的资源。
作者简介
作者:(美国)希尔雅德 (Hilyard.J) (美国)特尔赫特 (Teilher.S.) 译者:陈宗斌
书籍目录
前言第1章 语言级集成查询(KINQ) 1.0 简介 1.1 查询消息队列 1.2 使用带有数据的集合语义 1.3 利用LINQ to SQL重用参数化查询 1.4 以一种文化敏感的方式对结果排序 1.5 添加用于LINQ的功能扩展 1.6 跨数据库执行查询和连接 1.7 利用LINQ查询配置文件 1.8 直接从数据库创建XML文件 1.9 有选择地输出查询结果 1.10 结合使用LINQ与不支持IEnumerable的集合第2章 字符串和字符 2.0 简介 2.1 确定char包含的字符种类 2.2 在比较两个字符时控制大小写敏感性 2.3 在一个字符串内寻找另一个字符串出现的所有位置 2.4 在比较两个字符串时控制大小写敏感性 2.5 把一个字符串与另~个字符串的头部或尾部作比较 2.6 插入文本到字符串中 2.7 删除或替换字符串内的字符 2.8 把二进制数据编码为base64格式 2.9 解码base64编码的二进制数据 2.10 把作为byte[]返回的字符串转换为字符串 2.11 把字符串传递给只接受byte[]的方法 2.12 把字符串转换为其他类型 2.13 创建定界字符串 2.14 从定界字符串中提取数据项 2.15 遍历字符串中的每个字符 2.16 从字符串的头部和/或尾部删除字符 2.17 测试字符串是否为null或者长度为O 2.18 追加行第3章 类和结构 3.0 简介 3.1 创建联合类型的结构 3.2 使类型可排序 3.3 使类型可检索 3.4 间接重载+=、-=、/=和×=运算符 3.5 间接重载&&、II和?:运算符 3.6 创建无错的表达式 3.7 简化布尔逻辑 3.8 以程序设计语言无关的方式在简单类型之间转换 3.9 确定何时使用强制转换运算符、as运算符或is运算符 3.10 利用as运算符进行强制转换 3.1 1 利用is运算符确定变量的类型 3.12 从一个方法返回多个数据项 3.13 解析命令行参数 3.14 在运行时初始化常量字段 3.15 构建可复制的类 3.16 确保处理对象 3.17 处理非托管资源 3.18 确定装箱和拆箱的位置 第4章 泛型 4.0 简介 4.1 确定使用泛型的时间和位置 4.2 理解泛型类型 4.3 利用对应的泛型替换ArrayList 4.4 用对应的泛型替换Stack和Queue 4.5 使用链表 4.6 创建可以初始化为null的值类型 4.7 反转有序链表中的内容 4.8 以泛型方式创建只读集合 4.9 利用对应的泛型替换Hashtable 4.10 对泛型Dictionary类型使用foreach 4.11 约束类型参数 4.12 将泛型变量初始化为它们的默认值 第5章 集合 5.0 简介 5.1 交换数组中的两个元素 5.2 快速反转数组 5.3 编写更灵活的StackTrace类 5.4 确定一个数据项在List中出现的次数 5.5 检索List中的特定数据项的所有实例 5.6 从数组中插入和删除数据项 5.7 保持List有序 5.8 对Dictionary的键和/或值排序 5.9 创建具有最大值和最小值界限的Dictionary 5.10 在数组中存储列表的快照 5.11 维持应用程序会话之间的集合 5.12 测试Array或List中的每个元素 5.13 对Array或List中的每个元素执行一种操作 5.14 创建只读的Array或List第6章 迭代器、分部类型和分部方法 6.0 简介 6.1 在泛型类型上创建迭代器 6.2 在非泛型类型上创建迭代器 6.3 创建自定义的枚举器 6.4 实现迭代器逻辑 6.5 强制迭代器停止迭代 6.6 处理finally块和迭代器 6.7 在类中实现嵌套的foreach功能 6.8 组织接口实现 6.9 生成不再位于主代码路径中的代码 6.10 向生成的实体中添加挂钩第7章 异常处理 7.0 简介 7.1 知道何时捕获和重新抛出异常, 7.2 使用finally块时确保异常不会丢失 7.3 处理从通过反射调用的方法中抛出的异常 7.4 防止未处理的异常 7.5 获取异常信息 7.6 快速找到问题的根源 7.7 创建新的异常类型 7.8 获得栈记录 7.9 在第一次机会的异常上中断 7.10 处理从异步委托抛出的异常 7.11 利用Exception.Data给异常提供它们所需的额外信息 7.12 在WinForms应用程序中处理未处理的异常 7.13 处理Windows Presentation Foundation(WPF)应用程序中未处理的异常 7.14 为常见错误分析异常第8章 诊断 8.0 简介 8.1 对调试/跟踪输出提供细粒度的控制 8.2 确定进程是否停止了响应 8.3 在应用程序中使用事件日志 8.4 查找事件日志条目 8.5 监视事件日志中的特定条目 8.6 实现一个简单的性能计数器 8.7 启用和禁用复杂的跟踪代码 8.8 捕获进程的标准输出 8.9 为类创建自定义的调试显示第9章 委托、事件和lambda表达式 9.0 简介 9.1 控制何时以及是否在多播委托中触发一个委托 9.2 从多播委托中的每个委托获得返回值 9.3 为多播委托中的每个委托单独处理异常 9.4 把同步委托调用转换成异步委托调用 9.5 一种高级接口查找机制 9.6 观察字典的添加和修改 9.7 使用larnbda表达式 9.8 清晰地建立事件处理程序 9.9 在lambda表达式中使用不同的参数修饰符 9.10 在C≠}中使用闭包 9.11 使用函子对列表执行多种操作第10章 正则表达式 10.0 简介 10.1 枚举匹配 10.2 从MatchCollection中提取组 10.3 验证正则表达式的语法 10.4 只快速查找字符串中的最后一个匹配 10.5 增强基本的字符串替换功能 10.6 实现更好的标记器 10.7 统计文本行数 10.8 返回在其中找到匹配的一整行内容 10.9 找到出现的特定匹配 10.10 使用常见的模式第11章 数据结构与算法 11.0 简介 11.1 为一种数据类型生成散列代码 11.2 生成优先级队列 11.3 生成一对多映射(MultiMap) 11.4 生成一棵二叉查找树 11.5 生成一棵n叉树 11.6 使用HashSet对象第12章 文件系统I/O 12.0 简介 12.1 操作文件属性 12.2 重命名文件 12.3 输出与平台无关的EOL字符 12.4 操作目录属性 12.5 重命名目录 12.6 使用通配符查找目录或文件 12.7 获取目录树 12.8 解析路径 12.9 解析环境变量中的路径 12.10 运行并与控制台工具交互 12.11 锁定文件的子段 12.12 等待文件系统中要发生的动作 12.13 比较两个可执行模块的版本信息 12.14 查询系统上所有驱动器的信息 12.15 压缩及解压缩文件第13章 反射 13.0 简介 13.1 列出引用的程序集 13.2 列出导出的类型 13.3 找出重写方法 13.4 找出程序集中的成员 13.5 确定并获取程序集中的嵌套类型 13.6 显示类型的继承层次结构 13.7 找出类型的子类 13.8 找出程序集中所有可序列化的类型 13.9 动态调用成员 13.10确定类型或方法是否是泛型 13.11访问局部变量信息 13.12生成泛型类型第1 4章 Web 14.0 简介 14.1 将IP地址转换为主机名 14.2 将主机名转换为IP地址 14.3 解析URl 14.4 处理Web服务器错误 14.5 与Web服务器通信 14.6 通过代理服务器 14.7 从URL中获取HTML 14.8 使用Web浏览器控件 14.9 将数据库表与缓存绑定 14.10 通过编程预先构建一个ASP.NET网站 14.11 为Web对数据进行转义与取消转义 14.1 2 使用UriBuilder类 14.13 检查并修改Web应用程序配置 14.14 在用HTTP时使用缓存的结果以使性能更快 14.15 检测Web服务器的自定义错误页第15章 XML 15.0 简介 15.1 以文档顺序读取并访问XML数据 15.2 读取Web上的XML 15.3 查询XML文档的内容 15.4 检验XML 15.5 通过编程生成XML文档 15.6 检测对XML文档的修改 15.7 处理XML字符串中的非法字符 15.8 XML的转换 15.9 分割XML文档 15.10 合并XML文档 15.11 不重载验证修改过的XML文件 15.12 扩展转换 15.13 从已有XML文件中成批获得用户的模式 15.14 向转换传递参数第16章 联网 16.0 简介 16.1 编写一个TCP服务器端 16.2 编写一个TCP客户端 16.3 模拟表单执行 16.4 通过HTTP传送数据 16.5 使用命名管道进行通信 16.6 以编程方式发送Pin9 16.7 使用SMTP服务发送SMTP邮件 16.8 使用套接字扫描机器的端口 16.9 使用当前的互联网连接设置 16.10 使用FTP传输文件第17章 安全性 17.0 简介 17.1 控制对本地程序集中类型的访问 17.2 加密/解密字符串 17.3 加密和解密文件 17.4 清理密码信息 17.5 验证字符串保持未破坏的流传输 17.6 安全存储数据 17.7 保证安全断言的安全 17.8 验证程序集已经具备特定许可 17.9 最小化程序集的攻击面 17.10 获得安全/审计信息 17.11 授权/撤销对文件或注册表键的访问 17.12 使用安全字符串保护字符串数据 17.13 保护流数据 17.14 加密web.config信息 17.15 获得抛出SecurityException的完整理由 17.16 实现安全的Unicode编码 17.17 获得一个更安全的文件句柄第18章 线程与同步 18.0 简介 18.1 创建每个线程的静态字段 18.2 向类成员提供线程安全的访问 18.3 防止沉默的线程终止 18.4 同步委托完成的通知 18.5 秘密存储特定线程的数据 18.6 使用信号量实现资源的多重访问 18.7 使用Mutex同步多个进程 18.8 使用事件协调线程 18.9 为事件获得命名权 18.10 在线程间执行原子操作 18.11 优化主读访问第19章 工具箱 19.0 简介 19.1 处理操作系统关机、电源管理或用户会话修改 19.3 列出加载程序集的进程 19.4 使用本地工作站上的消息队列 19.5 找出当前框架版本的路径 19.6 确定全局程序集缓存(GAC)中注册的程序集版本 19.7 捕获标准输出流的输出 19.8 运行位于自己的AppDomain中的代码 19.9 确定操作系统和当前操作系统的服务包版本第20章 数字与枚举 20.0 简介 20.1 度与弧度之间的转换 20.2 对各种数据类型使用按位求补运算符 20.3 将数字从某种基数转换为基数10 20.4 确定一个字符串是否是合法数字 20.5 舍入浮点值 20.6 选择一种舍入算法 20.7 温度计数法之间的转换 20.8 安全地执行收缩数字强制转换 20.9 将一个枚举值显示为字符串 20.10 将纯文本转换为等价的枚举值 20.11 测试合法的枚举值 20.12 测试合法的标志枚举 20.13 使用位掩码中的枚举成员 20.14 确定一个或多个枚举标志是否被设置 20.15 确定Decimal或Double数字的整数部分
章节摘录
插图:
编辑推荐
你将找到用于以下方面的秘诀: 你还将发现其他一些秘诀,它们用于加密和解密、控制对类型的访问、安全地存储数据、使用编程性 安全和声明性安全等。所有的解决方案都是使用Visual Studi0.NET 2008开发的。 《C#3.0 Cookbook(中文版)(第3版)》的补充资源是一个公共共建性网站,它包括C#2.0秘诀的以前版本,C#3.0版本没有修改它们。
图书封面
图书标签Tags
无
评论、评分、阅读与下载