C# 时间计算通类


-
包含几乎全部可以用到的时间计算方法 时间差 每月星期 每月第几个星期几等等
-
2013-03-08
-
2013-02-28
6.27MB
C#微软培训资料
2014-01-22<<page 1>> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 4.3 装箱和拆箱 .39 4.4 小 结 .42 第五章 变量和常量 .44 5.1 变 量 .44 5.2 常 量 .46 5.3 小 结 .47 第六章 类 型 转 换 .48 6.1 隐式类型转换 .48 6.2 显式类型转换 .53 6.3 小 结 .56 第七章 表 达 式 .58 7.1 操 作 符 .58 7.2 算术操作符和算术表达式.59 7.3 赋值操作符和赋值表达式.64 7.4 关系操作符和关系表达式.65 <<page 2>> page begin==================== 7.5 逻辑操作符和逻辑表达式.68 7.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 .77 第八章 流 程 控 制 .79 8.1 条 件 语 句 .79 8.2 循 环 语 句 .86 8.3 条 件 编 译.90 8.4 异常处理语句 .95 8.5 小 结 .100 第三部分 面向对象的 C#.101 第九章 面向对象的程序设计 .101 9.1 面向对象的基本概念.101 9.2 对象的模型技术 .103 9.3 面向对象的分析 .105 9.4 面向对象的设计 .107 9.5 小 结 .110 第十章 类 .112 10.1 类 的 声 明 .112 10.2 类 的 成 员 .113 10.3 构造函数和析构函数 .119 10.4 小 结 .122 第十一章 方 法 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 1
6.16MB
C#微软培训教材(高清PDF)
2009-07-30C#--微软.NET的第一语言 本书着重介绍语言本身,比较少涉及应用,不错的入门书,从头讲起,不怕不明白。 <<page 1>> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 4.3 装箱和拆箱 .39 4.4 小 结 .42 第五章 变量和常量 .44 5.1 变 量 .44 5.2 常 量 .46 5.3 小 结 .47 第六章 类 型 转 换 .48 6.1 隐式类型转换 .48 6.2 显式类型转换 .53 6.3 小 结 .56 第七章 表 达 式 .58 7.1 操 作 符 .58 7.2 算术操作符和算术表达式.59 7.3 赋值操作符和赋值表达式.64 7.4 关系操作符和关系表达式.65 <<page 2>> page begin==================== 7.5 逻辑操作符和逻辑表达式.68 7.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 .77 第八章 流 程 控 制 .79 8.1 条 件 语 句 .79 8.2 循 环 语 句 .86 8.3 条 件 编 译.90 8.4 异常处理语句 .95 8.5 小 结 .100 第三部分 面向对象的 C#.101 第九章 面向对象的程序设计 .101 9.1 面向对象的基本概念.101 9.2 对象的模型技术 .103 9.3 面向对象的分析 .105 9.4 面向对象的设计 .107 9.5 小 结 .110 第十章 类 .112 10.1 类 的 声 明 .112 10.2 类 的 成 员 .113 10.3 构造函数和析构函数 .119 10.4 小 结 .122 第十一章 方 法 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 12.2 属 性 .143 12.3 小 结 .146 第十三章 事件和索引指示器 .148 13.1 事 件 .148 13.2 索引指示器 .151 13.3 小 结 .154 第十四章 继 承 .155 14.1 C#的继承机制.155 <<page 3>> page begin==================== 14.2 多 态 性 .159 14.3 抽象与密封 .163 14.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十五章 接 口 .174 15.1 组件编程技术 .174 15.2 接 口 定 义 .177 15.3 接口的成员 .178 15.4 接口的实现 .182 15.5 抽象类与接口 .195 15.6 小 结 .196 第十六章 组织应用程序 .198 16.1 基 本 概 念 .198 16.2 使用名字空间 .200 16.3 使用指示符 .203 16.4 程 序 示 例 .206 16.5 小 结 .213 第十七章 文 件 操 作 .215 17.1 .Net 框架结构提供的 I/O 方式 .215 17.2 文件存储管理 .217 17.3 读 写 文 件 .222 17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间成员速查.269 参 考 资 料 .300 <<page 4>> page begin==================== 第一部分 C#语言概述 第一章 第一章第一章 第一章 .NET 编程语 编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 Microsoft.NET 的概念 .NET 框架 C#语言在.NET 框架中的作用及其特性 1.1 Microsoft.NET 一场新的革命 1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 Microsoft.NET(以下简称.NET) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 Microsoft.NET 的认同 并且开发出其他基于 Internet 的服务 那么 你是否想知道 究竟什么是.NET? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 它定义了一种公用语言子集 Common Language Subset CLS ,这是一种为符合其规范的语言与类库之间提供无缝集成的混合语 .NET 统一了编程类库 提供了对下一代网络通信标准 可扩展标记语言 Extensible Markup <<page 5>> page begin==================== Language XML 的完全支持 使应用程序的开发变得更容易 更简单 Microsoft.NET 计划还将实现人机交互方面的革命 微软将在其软件中添加手写和语音识别的功能 让人们能够与计算机进行更好的交流 并在此基础上继续扩展功能 增加对各种用户 终端的支持能力 最为重要的 .NET 将改变因特网的行为方式 软件将变成为服务 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标是让 Microsoft.NET 彻底改变软件的开发方式 发行方式 使用方式等等 并且 不止是针对微软一家 而是面向所有开发商与运营商 .NET 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 1.1.2 我们为什么需要.NET 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 这就是 Microsoft.NET 提高软件开发生产效率 并且试图使应用软件的发布更为容易 再也不想因为 DLL 版本不同而烦恼 希望不用重新启动电脑就能够安装应用软件 改进用户界面 并能支持多种用户终端 用户界面演进的结果包括两方面的内容 一是完成传统的 PC 界面与基于 XML 的浏览器界面间的过渡 二是对自然语言和语音 识别的支持 从而使用户与各种终端之间的沟通更加透明 真正达到网络互连的 3A Anywhere Anytime Any device 今天 许多的人时常问 除了上网看新闻 我们究竟还能干什么 这是因为今 天的互联网与旧式的大型计算机的工作模式还有许多相似之处 信息被储存在中央服 务器内 而用户的所有操作都要依靠它们 让不同的网址之间相互传递有意义的信息 或者合作提供更广泛和更深层次的服务 还是一件十分困难的事 现代人时常有一种困惑 感觉到如今生活在技术与机器架构的丛林中 我们在努 力地去适应机器 适应技术 而不是机器和技术适应人类 科技以人为本还只是一个 美好的愿望 这是因为我们还不能将控制信息的权利交给那些需要信息的人们 .NET <<page 6>> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 1.1.3 .NET 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 Passport.NET 用于用户认 证 以及用于文件存储的服务 用户首选项管理 日历管理以及众多的其它任务 构建和管理新一代服务的基本结构和工具 包括 Visual Studio.NET .NET 企 业服务器 .Net Framework 和 Windows.NET 能够启用新型智能互联网设备的.NET 设备软件 .NET 用户体验 1.2 .NET 与 C# 1.2.1 支持多种编程语言的.NET 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <<page 7>> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms ADO.NET 和 ASP.NET 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 1.2.2 面向.Net 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <<page 8>> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 1.3 C#语言的特点 C#在带来对应用程序的快速开发能力的同时 并没有牺牲 C 与 C++程序员所关心 的各种特性 它忠实地继承了 C 和 C++的优点 如果你对 C 或 C++有所了解 你会发 现它是那样的熟悉 即使你是一位新手 C#也不会给你带来任何其它的麻烦 快速应 用程序开发 Rapid Application Development RAD 的思想与简洁的语法将会使你迅 速成为一名熟练的开发人员 正如前文所述 C#是专门为.NET 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 1.3.1 简洁的语法 请原谅 虽然我们一再强调学习本书不需要任何的编程基础 但在这里还不得不 提到 C++ 在缺省的情况下 C#的代码在.NET 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <<page 9>> page begin==================== 于我们来说 现在需要理解的一切仅仅是名字嵌套而已 C#用真正的关键字换掉了那些把活动模板库 Active Template Library ALT 和 COM 搞 得 乱 糟 糟 的 伪 关 键 字 , 如 OLE_COLOR BOOL VARIANT_BOOL DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新名字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各样的字 符类型等等 C#对此进行了简化 只保留了常见的形式 而别的冗余形式从它的语法 结构中被清除了出去 1.3.2 精心地面向对象设计 也许你会说 从 Smaltalk 开始 面向对象的话题就始终缠绕着任何一种现代程序 设计语言 的确 C#具有面向对象的语言所应有的一切特性 封装 继承与多态 这 并不出奇 然而 通过精心地面向对象设计 从高级商业对象到系统级应用 C#是建 造广泛组件的绝对选择 在 C#的类型系统中 每种类型都可以看作一个对象 C#提供了一个叫做装箱 boxing 与拆箱 unboxing 的机制来完成这种操作 而不给使用者带来麻烦 这在 以后的章节中将进行更为详细的介绍 C#只允许单继承 即一个类不会有多个基类 从而避免了类型定义的混乱 在后 面的学习中你很快会发现 C#中没有了全局函数 没有了全局变量 也没有了全局常 数 一切的一切 都必须封装在一个类之中 你的代码将具有更好的可读性 并且减 少了发生命名冲突的可能 整个 C#的类模型是建立在.NET 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 1.3.3 与 Web 的紧密结合 .NET 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <<page 10>> page begin==================== 效地处理各种数据 1.3.4 完全的安全性与错误处理 语言的安全性与错误处理能力 是衡量一种语言是否优秀的重要依据 任何人都 会犯错误 即使是最熟练的程序员也不例外 忘记变量的初始化 对不属于自己管理 范围的内存空间进行修改 这些错误常常产生难以预见的后果 一旦这样的软 件被投入使用 寻找与改正这些简单错误的代价将会是让人无法承受的 C#的先进设 计思想可以消除软件开发中的许多常见错误 并提供了包括类型安全在内的完整的安 全性能 为了减少开发中的错误 C#会帮助开发者通过更少的代码完成相同的功能 这不但减轻了编程人员的工作量 同时更有效地避免了错误发生 .NET 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 1.3.5 版本处理技术 C#提供内置的版本支持来减少开发费用 使用 C#将会使开发人员更加轻易地开发 和维护各种商业应用 升级软件系统中的组件 模块 是一件容易产生错误的工作 在代码修改过程中 可能对现存的软件产生影响 很有可能导致程序的崩溃 为了帮助开发人员处理这些 问题 C#在语言中内置了版本控制功能 例如 函数重载必须被显式地声明 而不会 像在 C++或 Java 中经常发生的那样不经意地被进行 这可以防止代码级错误和保留版 本化的特性 另一个相关的特性是接口和接口继承的支持 这些特性可以保证复杂的 软件可以被方便地开发和升级 1.3.6 灵活性和兼容性 在简化语法的同时 C#并没有失去灵活性 尽管它不是一种无限制的语言 比如 它不能用来开发硬件驱动程序 在默认的状态下没有指针等等 但是 在学习过程中 你将发现 它仍然是那样的灵巧 如果需要 C#允许你将某些类或者类的某些方法声明为非安全的 这样一来 你 <<page 11>> page begin==================== 将能够使用指针 结构和静态数组 并且调用这些非安全的代码不会带来任何其它的 问题 此外 它还提供了一个另外的东西 这样的称呼多少有些不敬 来模拟指针的 功能 delegates 代表 再举一个例子 C#不支持类的多继承 但是通过对接口的 继承 你将获得这一功能 下面谈谈兼容性 正是由于其灵活性 C#允许与 C 风格的需要传递指针型参数的 API 进行交互操作 DLL 的任何入口点都可以在程序中进行访问 C#遵守.NET 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 1.4 小 结 Microsoft.NET 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说明.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <<page 12>> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET 平台之上 其各种特性与.NET 密切联系 它没有自己的运行库 许多强大的功能均来自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 2.1 .NET 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 2.1.1 虚拟对象系统 .NET 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <<page 13>> page begin==================== 2.1.2 元数据 元数据是对 VOS 中类型描述代码的一种称呼 在编译程序将源代码转换成为中间 代码时 它将自动生成 并与编译后的源代码共同包含在二进制代码文件中 元数据 携带了源代码中类型信息的描述 这在一定程度上解决了版本问题 程序使用的类型 描述与其自身绑定在一起 在 CLR 定位与装载类型时 系统通过读取并解析元数据来获得应用程序中的类型 信息 JIT 编译器获得加载的类型信息后 将中间语言代码翻译成为本地代码 在此基 础上根据程序或用户要求建立类型的实例 由于整个过程中 CLR 始终根据元数据建 立并管理对应特定应用程序的类型 从而保证了类型安全性 此外 元数据在解决方法的调用 建立运行期上下文界限等方面都有着自己的作 用 而关于元数据的一切都由.NET 在后台完成 2.1.3 公用语言规范 公用语言规范 Common Language Specification CLS 是 CLR 定义的语言特性 集合 主要用来解决互操作问题 如果一个类库遵守 CLS 那么同样遵守 CLS 规范的 其它编程语言将能够使用它的外部可见项 详细的内容见本章第二节 2.1.4 虚拟执行系统 虚拟执行系统 Visual Execution System VES 是 VOS 的实现 它用来驱动运行 环境 元数据的生成与使用 公用语言规范的满足性检查以及应用程序执行过程中的 内存管理均由它来完成 具体说来 VES 主要完成以下功能 装入中间代码 使用 JIT 将中间代码转换为本地码 装入元数据 代码管理服务 包括垃圾收集器和异常处理 定制与调试服务 线程和环境管理 2.2 公用语言运行时环境与公用语言规范 了解了.NET 的结构之后 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <<page 14>> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 2.2.1 理解 CLR .NET 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以前具有更多的面向对象的特性 <<page 15>> page begin==================== 2.2.2 可操控执行的含义 前面的叙述中 我们多次提到了 可操控 这一概念 这意味着它指向的对象在 执行过程中完全被运行时环境所控制 在执行过程中 运行时环境提供以下服务 自 动内存管理 调试支持 增强的安全性及与非可操控代码的互操作性 例如 COM 组件 在可控执行进程中的第一步是选择源代码的生成工具 如果你希望你的应用拥有 CLR 提供的优势 你必须使用一种 或多种 以运行时为目标的语言编译器 例如 VB C# VC 的编译器 或者一种第三方编译器如 PERL 或 COBOL 编译器 由于运行时是一种多语言执行环境 它支持众多的数据类型和语言特性 你使用 的语言编译器决定你将使用运行时的哪一部分功能子集 在代码中使用的语法由你的 编译器决定 而不是运行时环境 如果你的组件需要被其他语言的组件完全使用 那 么你必须在你组件的输出类型中使用 CLR 所要求的语言特征 当你完成并编译你的代码时 编译器将它转换为微软中间语言 Microsoft Intermediate Language MSIL 同时产生元数据 当你要执行你的代码时 这种中间 语言被即时 Just In Time JIT 编译器编译成为本地代码 如果安全策略需要的代码 是类型安全的 通常情况下都是如此 JIT 编译器将在编译进程中对中间语言进行 类型检查 一旦失败 在代码执行中将会触发异常 2.2.3 CLR 的突出特色 跨语言集成的能力 CLR 包含了一个丰富的语言特性集 保证了它与各种程序设计语言的兼容性 这 一特性集即公用语言规范 稍后将对其进行详细说明 内存管理自动化 在执行过程中管理应用程序的资源是一项单调而困难的工作 它会将你的注意力 从你本应解决的问题中引开 而垃圾收集机制完全解决了程序员在编程过程中头痛的 问题 跟踪内存的使用 并知道何时将它们释放 在面向对象的环境中 每种类型都标识了对你的应用有用的某种资源 为了使用 这些资源 你需要为类型分配内存 在应用中 访问一种资源要通过以下步骤 1 为类型分配内存 2 初始化内存 设置资源的初始状态并使其可用 3 通过访问该类型的实例成员来访问资源 4 卸下将被清除的资源状态 5 释放内存 这一看似简单的过程在实际的编程中是产生程序错误的主要来源之一 更可怕的 是 内存中的错误往往导致不可预见的结果 如果你有过编程的经验 想想看 有多 少次你的程序因为内存访问错误而崩溃 CLR 要求所有的资源从可操控的堆 注 在此指一种内存结构 中分配 当一个 <<page 16>> page begin==================== 进程被初始化后 CLR 保留了一个未被分配的地址空间 这一区域叫做可操控堆 在 堆中保持了指向下一个将被分配给对象的堆地址的指针 NEXT 初始状态下 该指 针是保留地址空间的基地址 一个应用使用新的操作产生对象 此操作首先检查新对 象需要字节的大小是否会超出保留空间 如果对象大小合适 指向下一个地址的指针 将指向堆中的这个对象 该对象的构造器被调用 新的操作返回对象的地址 当一个应用请求建立一个对象时 地址空间可能不够大 堆将发现这一点 通过 将新对象的大小与 NEXT 指针相加 并与堆的大小进行比较 这时垃圾收集器就将被 调用 在这里 CLR 引入了 代 的概念 代 指堆中对象产生的先后 这样 垃圾 收集器在将发生溢出时回收属于特定的 代 的对象 而不是回收堆中的所有对象 6 即时编译 在各种语言的编译器对源代码进行编译之后 在 CLR 环境中产生的是中间代码 出 于兼容性与跨语言集成的考虑 其内容虽然有效 但在转化为本地代码之前它本身是 不可执行的 这就是 JIT 编译器需要完成的工作 这里需要说明一个问题 为什么要即时编译 而不是一次性的将中间代码文件进 行编译 答案很简单 原因在于效率 在大型的应用中 你很少会用到程序的全部功 能 这种边执行边编译的措施比一次性的完全编译效率更高 在 Windows 平台中 CLR 带有三个不同的 JIT 编译器 7 缺省的编译器 主编译器 由它进行数据流分析并输出经过优化的本地代 码 所有的中间代码指令均可被它处理 8 PREJIT 它建立在主 JIT 编译器之上 其运行方式更像一个传统的编译器 每当一个.NET 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 jitman.exe 具体的使用参见联机帮助 10 解决版本与发布问题 在当前以组件为基础的系统中 开发人员和用户对于软件版本和发布中存在的问 题已经十分熟悉了 当我们安装一个新的应用之后 我们很可能发现原本正常的某个 应用程序奇怪地停止了工作 绝大多数开发人员将时间花在了确保所有注册表入口的 一致性 以便激活 COM 类上 这就是所谓的 DLL 地狱 .NET 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对代码的完全 <<page 17>> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明的版本政策下重写集合的版本信息 2.2.4 公用语言规范 使被不同语言的编译器所编译的对象能够相互理解的唯一方法 是所有在互操作 过程中涉及的数据类型和语言特性对所有的语言来说是公共的 为了这个目的 公用 运行时环境标识了一组语言特征的集合 称为公用语言规范 CLS 如果你的组件在 应用程序接口 Application Program Interface 中仅使用 CLS 的特征语言 包括子类 那么该组件能够被任何支持CLS的语言所编译的组件访问 所有支持CLS并仅使用CLS 中的语言特征的组件被称为符合 CLS 的组件 设计公用语言规范时遇到的一个最主要的挑战是选择适当的语言特性子集的大 小 它应具有完全的表达能力 又应足够小 使得所有的语言能够容纳它 由于 CLS 是关于语言互用性的规范 它的规则仅应用于外部可见的条目中 CLS 假设语言间的 互操作性仅在语言集合的边界发生交叉时才是重要的 也就是说 在单一的语言集中 对于编程技术的使用没有任何限制 CLS 的规则仅作用于在定义它们的语言集合之外 仍然可见的项上 这样就大大缩小了 CLS 的范围 减轻了系统的负担 在 CLS 中是用 System.CLSCompliantAtribute 类来标识一个集合或者类是否是符合 CLS 规范的 在 System.CLSCompliantAtribute 的构造器中有一个 Boolean 型的返回值 代表了与之相关联的项是否符合 CLS 规范 2.3 开 发 工 具 .NET 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 1. Visual Studio.NET 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# 2. Assembly Generation Utility (al.exe) 用来建立集合的工具 它能够将资源文件 或 MSIL 格式的文件转换为带有内容清单的集合 3. Windows Forms ActiveX Control Importer (aximp.exe) 完成 COM 类库中类型定 义的转换 使 ActiveX 控件能够在 Windows 窗口控件上使用 4. Code Access Security Policy Utility (caspol.exe) 在用户与机器水平上修改安全策 略 <<page 18>> page begin==================== 5. Software Publisher Certificate Test Utility (Cert2spc.exe) 用于从 X.509 证书中生 成软件出版证明书 SPC 6. Certificate Manager Utility (certmgr.exe) 管理证书 证书信任列表和证书回收列 表 7. Certificate Verification Utility (chktrust.exe) 检查证书签名的合法性 8. Runtime Debugger (cordbg.exe) 运行时调试器 是一个命令行程序 帮助开发 人员发现和调试基于 CLR 的应用程序中的错误 9. Global Assembly Cache Utility (gacutil.exe) 允许你浏览与操纵全局集合缓存中 内容的命令行程序 10. MSIL Assembler (ilasm.exe) MSIL 汇编程序 协助设计与实现 MSIL 生成器的 程序 11. MSIL Disassembler (ildasm.exe) MSIL 反汇编程序 与 ilasm.exe 共同使用 将 由 MSIL 代码产生的 Portable Executable 文件转换为文本文件 12. Instaler Utility (instalutil.exe) 用来安装与卸载服务资源 13. License Compiler (lc.exe) 产生可包含在可执行二进制文件中的二进制资源文 件 14. Certificate Creation Utility (makecert.exe) 生成 X.509 证书与用于数字签名的公 用与私有密钥 15. Permissions View Utility(permview.exe) 通过一个集合浏览许可集的工具 16. Peverify Utility(peverify.exe) 检查中间语言与元数据是否符合类型安全认证要 求 17. Assembly Registration Tool(RegAsm.exe) 读取集合中的元数据并加上必要注册 表入口信息 使得 COM 客户透明地建立 CLR 的类 18. Services Registration Tool (RegSvcs.exe) 服务注册工具 它完成执行以下功能 装载与注册一个集合 为现有的 COM+1.0 应用生成 注册与安装类库 19. Resource File Generator Utility(ResGen.exe) 资源文件生成器 用来将文本文件 和 XML 格式的资源文件转换为 CLR 的二进制文件 20. Secutil Utility(SecUtil.exe) 使得从集合中抽取的安全信息更加容易 21. Set Registry Utility(setreg.exe) 改变注册表中公开密钥密码系统的设置 22. Assembly Cache Viewer(shfusion.dl) 允许你使用 Windows 浏览器察看与操作 全局集合缓存中的内容 23. File Signing Utility(signcode.exe) 为 PE (portable executable)文件做标记 赋予 程序员在组件安全约束的基础上对安全性有更多的控制权 24. Shared Name Utility(Sn.exe) 帮助程序员以共享名称建立集合 25. Soapsuds Utility(SoapSuds.exe) 使用远程技术帮助你编译与 Web 服务相通信的 客户应用 26. Isolated Storage Utility(storeadm.exe) 一种用来管理隔离存储区的命令行工具 27. Type Library Exporter(TlbExp.exe) 命令行程序 生成由集合名称指示的包含集 合中公共类型定义的类库 <<page 19>> page begin==================== 28. Type Library Importer (TlbImp.exe) 将 COM 类库中的类型定义转换为在 CLR 中与元数据格式一致的类型定义 29. Web Service Utility(WebServiceUtil.exe) 帮助建立 ASP.NET Web 服务与客户 30. Windows Forms Class Viewer(wincv.exe) 能够在某种查找模式下快速查找类或 者类序列的信息 31. Windows Forms Designer Test Container(windes.exe) 允许开发人员测试开发出 的视窗窗体控件在设计时的行为 32. XML Schema Definition Tool(xsd.exe) XML 计划定义工具 2.4 小 结 本章解释了与.NET 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执行 的含义是什么 4 .NET 是怎样解决传统 Windows 程序设计中 DLL 的版本问题的 5 什么是 CLS 它的范围是怎样确定的 <<page 20>> page begin==================== 第三章 编写第一个应用程序 介绍了 C#语言的这么多优点 您可能已经有些不耐烦了 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 3.1 Welcome 程序 可以这么说 与用户没有任何交互的应用程序根本没有任何用处 病毒和黑客当 然除外 然而即使是病毒程序的作者 也常常喜欢在自己得逞之后炫耀一番 学习任 何一门语言 绝大多数情况下人们都是从输入输出开始的 第一个程序总是非常简单的 我们让用户通过键盘输入自己的名字 然后程序在 屏幕上打印一条欢迎信息 程序的代码是这样的 程 程序 序清 清单单 3-1 using System; class Welcome { static void Main() { Console.WriteLine("Please enter your name:"); Console.ReadLine(); Console.WriteLine("Welcome to you!"); } } 您可以在任意一种编辑软件中完成上述代码的编写 然后把文件存盘 文件名叫 做 Welcome.cs 典型的 C#源文件通常都是以 .cs 作为文件的扩展名 3.2 代 码 分 析 首先要提出的是 C#语言是大小写敏感的 这一点对于 C 和 C++程序员没什么问 <<page 21>> page begin==================== 题 只是要提醒一下 VB 和 Delphi 的程序员 接下来让我为您逐条地分析上面的 C#程序语句 3.2.1 名字空间 using System 表示导入名字空间 高级语言总是依赖于许多系统预定义的元素 如果 您是 C 或 C++的程序员 那么您一定对使用#include 之类的语句来导入其它 C 或 C++ 源文件再熟悉不过了 C#中的含义与此类似 用于导入预定义的元素 这样在自己的 程序中就可以自由地使用这些元素 如果没有导入名字空间的话 我们该怎么办呢 程序还能保持正确吗 答案是肯 定的 那样的话 我们就必须把代码改写成下面的样子 程 程序 序清 清单 单 3-2 class Welcome { static void Main() { System.Console.WriteLine("Please enter your name:"); System.Console.ReadLine(); System.Console.WriteLine("Welcome to you!"); } } 也就是说 在每个 Console 前加上一个前缀 System. 这个小原点 . 表示 Console 是作为 System 的成员而存在的 C#中抛弃了 C 和 C++中繁杂且极易出错的操作符像 : 和 -> 等 C#中的复合名字一律通过 . 来连接 System 是.Net 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 够了 3.2.2 类和类的方法 让我们从写第一个程序时就记住 每个东西都必须属于一个类 如果您是 C 或 C++ 的程序员 请暂时忘掉那些全局变量 在程序的第二行 class Welcome 声明了一个类 类的名字叫做 Welcome 这个程 序为我们所作的事情就是依靠它来完成的 和 C C++中一样 源代码块被包含在一对大括号 { 和 } 中 每一个右括号 } 总是和它前面离它最近的一个左括号 { 相配套 如果左括号 { 和右括号 } 没有全部配套 那程序就是一个错误的程序 static void Main()表示类 Welcome 中的一个方法 方法总是为我们完成某件工作的 注意 在 C#程序中 程序的执行总是从 Main()方法开始的 一个程序中不允许出 <<page 22>> page begin==================== 现两个或两个以上的 Main()方法 对于习惯了写 C 控制台程序的读者 请牢记 C#中 Main()方法必须被包含在一个类中 3.2.3 程序的输入和输出 程序所完成的输入输出功能都是通过 Console 来完成的 Console 究竟是什么呢 它是在名字空间中 System 已经为我们定义好的一个类 这里我们不用管它是怎么完成 工作的 只要使用它就可以了 上面的代码中 类 Console 为我们展现了两个最基本的方法 WriteLine 和 ReadLine Console.ReadLine 表示接受输入设备输入 Console. WriteLine 则用于在输出设备上输 出 我们再为读者介绍 Console 中用于输入输出的另两个方法 Read 和 Write 它们和 ReadLine 与 WriteLine 的不同之处在于 ReadLine 和 WriteLine 执行时相当在显示时多 加了一个回车键 而使用 Read 和 Write 时则光标不会自动转移到下一行 让我们再对例子程序进行扩展 使得用户的输入对输出产生作用 程 程序序清 清单 单 3-3 using System; class Welcome { static void Main() { Console.WriteLine("Please enter your name:"); string name = Console.ReadLine(); Console.WriteLine("Welcome to you,{0}!",name); } } 我们用到了 string name = Console.ReadLine()这条语句 其中 string name 表示声明一 个字符串类型的变量 name 系统定义的 Console 类提供的方法 ReadLine()的返回值类型 为 string 所以 这句话表示从输入设备读取一个字符串 并把读取的值赋予变量 name 再来看一下程序的最后一条输出语句 Console.WriteLine("Welcome to you,{0}!",name); 这条语句表示在屏幕上对输出的字符串进行格式化 其中表示用方法的第二个参 数来替代格式化后字符串相应的位置 对字符串进行格式化的参数可以是一个字符串 也可以是一个字符 或者是一个整数 等等 采用这种方式最多可以格式化三个变量 比如 int x = 3; string name1 = “Mike”; <<page 23>> page begin==================== string name2 = “John”; Console.WriteLine("Welcome to you {0} times,{1} and {2}!",x,name1,name2); 和绝大多数编程语言一样 C#提供了字符串类型 string 它与 C 中的 MFC 为我们 提供的类十分类似 C#中的 string 类型是一个引用类型 引用类型在第四章中我们有 详细说明 为标准字符集 利用 string 可以方便地对字符串进行连接 截断等操作 比如 string s = “Good” + “Morning”; char x = s[3]; 例子演示了字符串 s 由两个字符串 Good 和 Morning 相加得到 字符串还可 以通过下标进行索引 得到一个字符 上面的例子中字符 x 的值为 o 所以 源程序 3-4 和源程序 3-3 的作用没什么区别 程 程序 序清 清单 单 3-4 using System; class Welcome { static void Main() { Console.WriteLine("Please enter your name:"); string message = “Welcome to you “ + Console.ReadLine(); Console.WriteLine(mesage); } } 3.3 运 行 程 序 理解了源程序中每条代码的具体含义之后 下一步要做的就是让这个程序真正能 够运行 不过对源代码即使还有不明白的地方也没有关系 在后续章节的学习中 您 最终会熟练掌握这些概念的 如果您的电脑上安装了 Visual Studio .Net 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命令 编译并执行源文件 如果您不具备这个条件 那么您至少需要安装 Microsoft .Net Framework SDK 这 样才能够不妨碍您在本书中继续学习 C#语言 实际上 .Net 平台内置了 C#的编译器 下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc welcome.cs <<page 24>> page begin==================== 我们假设您已经将 welcome.cs 文件保存在当前目录下 如果一切正常 welcome.cs 文件将被编译 运行 屏幕上出现一行字符 提示您输入姓名 Please enter your name: 输入任意个字符并按下回车键 屏幕将打印出欢迎信息 Welcome to you! 注意 和到目前为止我们使用过的绝大多数编译器不同 在 C#中 编译器只执行 编译这个过程 而在 C 和 C++中要经过编译和链接两个阶段 换而言之 C#源文件并不 被编译为目标文件 .obj 而是直接生成可执行文件 .exe 或动态链接库 .dll C#编译器中不需要包含链接器 编译选项 我们可以灵活地使用 .Net 平台提供的命令行编译器的不同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 如果我们希望对源文件 Welcome.cs 进行编译 生成名为 MyWelcome.exe 的 可执行文件 我们可以采用这样的命令 csc/out: MyWelcome.exe Welcome.cs 如果我们并不需要一个可执行文件 而仅仅是希望简单地检查源文件中是否存在 语法错误 则命令可以写成 csc/nooutput: Welcome.cs 如果不知道各个选项的具体含义 可以通过求助来获得 csc/? 为方便读者 我们在表 3-1 中按字母排序的顺序列出了命令行编译器 csc 常用的参 数及其用途 更详细的信息请参阅 C#联机帮助文档 表 3-1 命令行编译器选项 选项 作用 @ 指定响应文件 /? 列出编译命令选项 /addmodule 指定一个或多个模块作为装配的一部分 /baseaddress 指定载入动态链接库的首选地址 /bugreport 生成一个报告文件 其中包含程序 Bug 的详细信息 /checked 指定算术运算的溢出是否会导致程序在运行时抛出一个异常 /codepage 指定编译的所有源文件所使用的代码页 /debug 给出调试信息 /define 定义预处理程序的符号 /doc 由文件注释生成 XML 文件 /fulpaths 指定输出的绝对路径 /help 列出编译命令选项 /incremental 允许对源文件进行递增式编译 /linkresource 在装配时链接指定的 NET 资源 <<page 25>> page begin==================== /main 指定 Main 方法所处的位置 /nologo 编译过程中不显示编译信息 /nooutput 编译源文件但不输出 /nostdlib 不导入标准库 (mscorlib.dl). 续表 选项 作用 /nowarn 编译过程中不生成警告信息 /optimize 指定编译时是否进行优化 /out 指定输出文件 /recurse 搜索子目录以寻找源文件 /reference 从包含装配的文件中导入元数据 /resource 把 NET 资源内嵌到输出文件 /target 指定输出文件的格式 /target:exe 输出文件为 exe 可执行文件 /target:library 输出文件为链接库 /target:module 输出文件为模块 /target:winexe 输出文件为 winexe 可执行文件 /unsafe 允许编译使用了不安全关键字的代码 /warn 设置警告级别 /warnaserror 把警告信息作为错误看待 /win32icon 把 .ico 图标文件插入到输出文件 /win32res 把 Win32 资源插入到输出文件 .4 添 加 注 释 应用程序并不是只要你自己一个人能看懂就够了 不管以前计算机老师或者是编 程书籍是否已经告诫过 这里我还要再一次强调 养成良好的代码注释的习惯 这是 一名优秀的程序员必备的条件之一 代码注释不会浪费您的编程时间 它只会提高您 的编程效率 使您的程序更加清晰 完整 友好 注释的方式和 ++没有区别 每一行中双斜杠 后面的内容 以及在 分割符 和 之间的内容都将被编译器忽略 这样 我们就可以采用 进行单行注释 采用分割符 和 进行多行注释 让我们对 Welcome 程序加上注释 程 程序序清 清单 单 3-5 源文件 welcome.cs / 说明 这里是我的第一个 程序 <<page 26>> page begin==================== using System; class Welcome { static void Main() { Console.WriteLine("Please enter your name:"); 要求用户输入姓名 Console.ReadLine(); 读取用户输入 Console.WriteLine("Welcome to you!"); 本行代码用于打印欢迎信息 您可以在这里添加自己的代码 程序在这里结束 } } 上面的注释似乎有些小题大做 但它毕竟说明了 中注释的使用方法 下面是对 程序进行注释时要注意的两个问题 首先 避免在 之后的单行注解中使用反斜杠符号 \ 因为反斜杠符号 \ 在 中是一个续行符 这样做往往会导致你所不希望的结果出现 例如 当你写了 类似于下面的代码 Console.WriteLine(“The result is:{0}” , / \ 150 ); 在编译这段代码时 表示逻辑上同一行剩余的所有文字被作为注释看待 而续行符 \ 则将这一行同下一行连接起来 那么第二行也被作为注释的一部分 这 时编译器找不到与第一行的左括号 相匹配的右括号 因此编译出错 其次 分割符 和 之间的注释不能有嵌套注释 这是因为 编译器从遇到第一个分割符 开始 将忽略下一个 直到遇上下
2.43MB
C#数据结构
2013-12-10C#版本数据结构,用C#的同志们有福啦 本书节选: 第1章 绪论 数据是外部世界信息的计算机化,是计算机加工处理的对象。运用计算机处 理数据时,必须解决四个方面的问题:一是如何在计算机中方便、高效地表示和 组织数据;二是如何在计算机存储器(内存和外存)中存储数据;三是如何对存 储在计算机中的数据进行操作,可以有哪些操作,如何实现这些操作以及如何对 同一问题的不同操作方法进行评价;四是必须理解每种数据结构的性能特征,以 便选择一个适合于某个特定问题的数据结构。这些问题就是数据结构这门课程所 要研究的主要问题。本章首先说明学习数据结构的必要性和本书的目的,然后解 释数据结构及其有关概念,接着讨论算法的相关知识,最后简单介绍本书所要用 到的相关数学知识和C#知识。 1.1 数据结构 1.1.1 学习数据结构的必要性 我们知道,虽然每个人都懂得英语的语法与基本类型,但是对于同样的题目, 每个人写出的作文,水平却高低不一。程序设计也和写英语作文一样,虽然程序 员都懂得语言的语法与语义,但是对于同样的问题,程序员写出来的程序不一样。 有的人写出来的程序效率很高,有的人却用复杂的方法来解决一个简单的问题。 当然,程序设计水平的提高仅仅靠看几本程序设计书是不行的。只有多思索、 多练习,才能提高自己的程序设计水平;否则,书看得再多,提高也不大。记得 刚学程序设计时,常听人说程序设计水平要想提高,最重要的是多看别人写的程 序,多去思考问题。从别人写的程序中,我们可以发现效率更高的解决方法;从 思考问题的过程中,我们可以了解解决问题的方法常常不只一个。运用先前解决 问题的经验,来解决更复杂更深入的问题,是提高程序设计水平的最有效途径。 数据结构正是前人在思索问题的过程中所想出的解决方法。一般而言,在学 习程序设计一段时间后,学习“数据结构”便能让你的程序设计水平上一个台阶。 如果只学会了程序设计的语法和语义,那么你只能解决程序设计三分之一的问 题,而且运用的方法并不是最有效的。但如果学会了数据结构的概念,就能在程 序设计上,运用最有效的方法来解决绝大多数的问题。 《数据结构》这门课程的目的有三个。第一个是讲授常用的数据结构,这些 数据结构形成了程序员基本数据结构工具箱(toolkit)。对于许多常见的问题,工 具箱里的数据结构是理想的选择。就像.NET Framework 中Windows应用程序开 发中的工具箱,程序员可以直接拿来或经过少许的修改就可以使用,非常方便。 第二个是讲授常用的算法,这和数据结构一样,是人们在长期实践过程中的总结, 程序员可以直接拿来或经过少许的修改就可以使用。可以通过算法训练来提高程 序设计水平。第三个目的是通过程序设计的技能训练促进程序员综合能力的提 高。 1.1.2 基本概念和术语 在本小节中,将对一些常用的概念和术语进行介绍,这些概念和术语在以后 的章节中会多次出现。 1、数据(Data) 数据是外部世界信息的载体,它能够被计算机识别、存储和加工处理,是计 算机程序加工的原料。计算机程序处理各种各样的数据,可以是数值数据,如整 数、实数或复数;也可以是非数值数据,如字符、文字、图形、图像、声音等。 2、数据元素(Data Element)和数据项(Data Item) 数据结构(C#语言版) 1.1 数据结构2 数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑 和处理。数据元素有时也被称为元素、结点、顶点、记录等。一个数据元素可由 若干个数据项(Data Item)组成。数据项是不可分割的、含有独立意义的最小数据 单位,数据项有时也称为字段(Field)或域(Domain)。例如,在数据库信息处理系 统中,数据表中的一条记录就是一个数据元素。这条记录中的学生学号、姓名、 性别、籍贯、出生年月、成绩等字段就是数据项。数据项分为两种,一种叫做初 等项,如学生的性别、籍贯等,在处理时不能再进行分割;另一种叫做组合项, 如学生的成绩,它可以再分为数学、物理、化学等更小的项。 3、数据对象(Data Object) 数据对象是性质相同的数据元素的集合,是数据的一个子集。例如,整数数 据对象是{0,±1,±2,±3,…},字符数据对象是{a,b,c,…}。 4、数据类型(Data Type) 数据类型是高级程序设计语言中的概念,是数据的取值范围和对数据进行操 作的总和。数据类型规定了程序中对象的特性。程序中的每个变量、常量或表达 式的结果都应该属于某种确定的数据类型。例如,C#语言中的字符串类型(String, 经常写为string)。一 个String表示一个恒定不变的字符序列集合,所有的字符序 列集合构成String的取值范围。我们可以对String进行求长度、复制、连接两个 字符
10.0MB
《C#高级编程第七版》中文(ProfessionalC#4.0and.NET4)[共十卷][VOL1]
2011-05-26该版本已添加目录标签 并修正了一些错误 中文名: C#高级编程 第七版 原名: Professional C# 4.0 and .NET 4 别名: C#高级编程(第7版) 作者: (美)Christian Nagel Bill Evjen Jay Glynn.译者: 无.资源格式: PDF 版本: 影印版 出版社: worx.书号: ISBN:9787302239376.发行时间: 2010年 地区: 大陆 语言: 中文 本书是Wrox畅销书,C#经典名著!2009年度全行业优秀畅销书。自第一版出版以来,都是国内读者的普遍好评,累计销量近十万册。 《C#高级编程(第7版)》的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写 Windows应用程序和ASP.NET Web应用程序。 本书几乎涵盖C#语言的所有功能,对于C#初学者和有经验的程序员是值得大力推荐的书籍。实践证明,本书是关于C# 和 Visual Studio的一本全面 而且权威的参考书。 新的C# 4对于在Visual Studio 2010中编写代码是必不可少的。这本实用指南强调,C#是编写.NET 4应用程序的首选语言。《C#高级编程(第7版)》 的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写Windows应用程序和ASP.NET Web应用程序。 本书主要内容 ◆ 回顾.NET体系结构、对象、泛型、继承、数组、运算符、类型强制转换、委托、事件、Lambda表达式等 ◆ 详细论述C#中的动态对象、命名参数和可选参数、COM专用的交互操作功能、安全类型变体 ◆ 阐述.NET 4的新增功能、WF 4、ADO.NET 数据服务、MEF、并行任务库和PLINQ ◆ 深入探讨LINQ、WCF、WPF、流文档和固定文档及Silverlight等功能强大的技术 ◆ 回顾ASP.NET编程,介绍ASP.NET MVC和ASP.NET 动态数据等新功能 ◆ 讨论使用WCF、MSMQ、点对点和联合进行通信 目录: 第ⅰ部分 c# 语 言 第1章 .net体系结构 3 1.1 c#与.net的关系 3 1.2 公共语言运行库 4 1.2.1 平台无关性 4 1.2.2 提高性能 4 1.2.3 语言的互操作性 5 1.3 中间语言 6 1.3.1 面向对象和接口的支持 6 1.3.2 不同的值类型和引用类型 7 1.3.3 强数据类型化 8 1.3.4 通过异常处理错误 12 1.3.5 特性的使用 13 1.4 程序集 13 1.4.1 私有程序集 14 1.4.2 共享程序集 14 1.4.3 反射 14 1.4.4 并行编程 15 1.5 .net framework类 15 1.6 名称空间 16 .1.7 用c#创建.net应用程序 16 1.7.1 创建asp.net应用程序 16 1.7.2 创建windows窗体 18 1.7.3 使用wpf 18 1.7.4 windows控件 19 1.7.5 windows服务 19 1.7.6 wcf 19 1.7.7 windows wf 19 1.8 c#在.net企业体系结构 中的作用 19 1.9 小结 21 第2章 核心c# 23 2.1 第一个c#程序 23 2.1.1 代码 24 2.1.2 编译并运行程序 24 2.1.3 详细介绍 25 2.2 变量 26 2.2.1 变量的初始化 27 2.2.2 类型推断 28 2.2.3 变量的作用域 29 2.2.4 常量 31 2.3 预定义数据类型 32 2.3.1 值类型和引用类型 32 2.3.2 cts类型 33 2.3.3 预定义的值类型 33 2.3.4 预定义的引用类型 36 2.4 流控制 38 2.4.1 条件语句 38 2.4.2 循环 42 2.4.3 跳转语句 45 2.5 枚举 46 2.6 名称空间 47 2.6.1 using语句 49 2.6.2 名称空间的别名 49 2.7 main()方法 50 2.7.1 多个main()方法 50 2.7.2 给main()方法传递参数 52 2.8 有关编译c#文件的更多内容 52 2.9 控制台i/o 54 2.10 使用注释 56 2.10.1 源文件中的内部注释 56 2.10.2 xml文档 56 2.11 c#预处理器指令 58 2.11.1 #define和 #undef 59 2.11.2 #if, #elif, #else和#endif 59 2.11.3 #warning和 # error 60 2.11.4 #region和#endregion 61 2.11.5 #line 61 2.11.6 #pragma 61 2.12 c#编程规则 62 2.12.1 关于标识符的规则 62 2.12.2 用法约定 63 2.13 小结 68 第3章 对象和类型 69 3.1 类和结构 69 3.2 类 70 3.2.1 数据成员 70 3.2.2 函数成员 71 3.2.3 只读字段 83 3.3 匿名类型 84 3.4 结构 85 3.4.1 结构是值类型 86 3.4.2 结构和继承 87 3.4.3 结构的构造函数 87 3.5 部分类 87 3.6 静态类 89 3.7 object类 89 3.7.1 system.object()方法 90 3.7.2 tostring()方法 90 3.8 扩展方法 92 3.9 小结 93 第4章 继承 95 4.1 继承的类型 95 4.1.1 实现继承和接口继承 95 4.1.2 多重继承 95 4.1.3 结构和类 96 4.2 实现继承 96 4.2.1 虚方法 97 4.2.2 隐藏方法 98 4.2.3 调用函数的基类版本 99 4.2.4 抽象类和抽象函数 100 4.2.5 密封类和密封方法 100 4.2.6 派生类的构造函数 101 4.3 修饰符 106 4.3.1 可见性修饰符 106 4.3.2 其他修饰符 106 4.4 接口 107 4.4.1 定义和实现接口 108 4.4.2 派生的接口 111 4.5 小结 113 第5章 泛型 115 5.1 概述 115 5.1.1 性能 116 5.1.2 类型安全 117 5.1.3 二进制代码的重用 117 5.1.4 代码的扩展 117 5.1.5 命名约定 118 5.2 创建泛型类 118 5.3 泛型类的功能 122 5.3.1 默认值 123 5.3.2 约束 123 5.3.3 继承 126 5.3.4 静态成员 127 5.4 泛型接口 127 5.4.1 协变和抗变 128 5.4.2 泛型接口的协变 129 5.4.3 泛型接口的抗变 130 5.5 泛型结构 131 5.6 泛型方法 134 5.6.1 泛型方法示例 134 5.6.2 带约束的泛型方法 135 5.6.3 带委托的泛型方法 136 5.6.4 泛型方法规范 137 5.7 小结 138 第6章 数组 139 6.1 简单数组 139 6.1.1 数组的声明 139 6.1.2 数组的初始化 139 6.1.3 访问数组元素 140 6.1.4 使用引用类型 141 6.2 多维数组 142 6.3 锯齿数组 143 6.4 array类 144 6.4.1 创建数组 145 6.4.2 复制数组 146 6.4.3 排序 147 6.5 数组作为参数 150 6.5.1 数组协变 151 6.5.2 arraysegment[t] 151 6.6 枚举 152 6.6.1 ienumerator接口 152 6.6.2 foreach语句 153 6.6.3 yield语句 153 6.7 元组 158 6.8 结构比较 159 6.9 小结 162 第7章 运算符和类型强制转换 163 7.1 运算符 163 7.1.1 运算符的简化操作 165 7.1.2 运算符的优先级 169 7.2 类型的安全性 169 7.2.1 类型转换 170 7.2.2 装箱和拆箱 173 7.3 比较对象的相等性 174 7.3.1 比较引用类型的相等性 174 7.3.2 比较值类型的相等性 175 7.4 运算符重载 176 7.4.1 运算符的工作方式 177 7.4.2 运算符重载的示例: vector结构 178 7.5 用户定义的类型强制转换 185 7.5.1 实现用户定义的类型 强制转换 186 7.5.2 多重类型强制转换 192 7.6 小结 195 第8章 委托、lambda表达式 和事件 197 8.1 委托 197 8.1.1 声明委托 198 8.1.2 使用委托 199 8.1.3 简单的委托示例 202 8.1.4 action[t]和func[t] 委托 204 8.1.5 bubblesorter示例 204 8.1.6 多播委托 207 8.1.7 匿名方法 210 8.2 lambda表达式 211 8.2.1 参数 212 8.2.2 多行代码 212 8.2.3 lambda表达式外部的 变量 213 8.3 事件 214 8.3.1 事件发布程序 214 8.3.2 事件侦听器 216 8.3.3 弱事件 217 8.4 小结 220 第9章 字符串和正则表达式 221 9.1 system.string类 221 9.1.1 创建字符串 222 9.1.2 stringbuilder成员 225 9.1.3 格式字符串 226 9.2 正则表达式 231 9.2.1 正则表达式概述 232 9.2.2 regularexpressions playaround示例 233 9.2.3 显示结果 235 9.2.4 匹配、组合和捕获 237 9.3 小结 238 第10章 集合 239 10.1 集合接口和类型 239 10.2 列表 240 10.2.1 创建列表 241 10.2.2 只读集合 250 10.3 队列 250 10.4 栈 254 10.5 链表 256 10.6 有序列表 261 10.7 字典 262 10.7.1 键的类型 263 10.7.2 字典示例 264 10.7.3 lookup类 268 10.7.4 有序字典 269 10.8 集 269 10.9 可观察的集合 271 10.10 位数组 272 10.10.1 bitarray类 273 10.10.2 bitvector32结构 275 10.11 并发集合 277 10.12 性能 279 10.13 小结 281 第11章 linq 283 11.1 linq概述 283 11.1.1 列表和实体 283 11.1.2 linq查询 287 11.1.3 扩展方法 288 11.1.4 推迟查询的执行 289 11.2 标准的查询操作符 291 11.2.1 筛选 293 11.2.2 用索引筛选 293 11.2.3 类型筛选 294 11.2.4 复合的from子句 294 11.2.5 排序 295 11.2.6 分组 296 11.2.7 对嵌套的对象分组 297 11.2.8 连接 298 11.2.9 集合操作 300 11.2.10 合并 301 11.2.11 分区 302 11.2.12 聚合操作符 303 11.2.13 转换 304 11.2.14 生成操作符 305 11.3 并行linq 306 11.3.1 并行查询 306 11.3.2 分区器 307 11.3.3 取消 307 11.4 表达式树 308 11.5 linq提供程序 311 11.6 小结 311 第12章 动态语言扩展 313 12.1 dlr 313 12.2 dynamic类型 313 12.3 包含dlr scriptruntime 318 12.4 dynamicobject和 expandoobject 321 12.4.1 dynamicobject 321 12.4.2 expandoobject 323 12.5 小结 324 第13章 内存管理和指针 325 13.1 后台内存管理 325 13.1.1 值数据类型 325 13.1.2 引用数据类型 327 13.1.3 垃圾回收 328 13.2 释放非托管的资源 330 13.2.1 析构函数 330 13.2.2 idisposable接口 331 13.2.3 实现idisposable接口 和析构函数 332 13.3 不安全的代码 334 13.3.1 用指针直接访问内存 334 13.3.2 指针示例: pointerplayground 343 13.3.3 使用指针优化性能 347 13.4 小结 350 第14章 反射 351 14.1 自定义特性 351 14.1.1 编写自定义特性 352 14.1.2 自定义特性示例: whatsnewattributes 355 14.2 反射 358 14.2.1 system.type类 358 14.2.2 typeview示例 360 14.2.3 assembly类 362 14.2.4 完成whatsnew attributes示例 364 14.3 小结 368 第15章 错误和异常 369 15.1 异常类 369 15.2 捕获异常 371 15.2.1 实现多个catch块 373 15.2.2 在其他代码中捕获异常 376 15.2.3 system.exception属性 376 15.2.4 没有处理异常时所发生 的情况 377 15.2.5 嵌套的 try块 378 15.3 用户定义的异常类 379 15.3.1 捕获用户定义的异常 380 15.3.2 抛出用户定义的异常 382 15.3.3 定义用户定义的异常类 385 15.4 小结 387 第ⅱ部分 visual studio 第16章 visual studio 2010 391 16.1 使用visual studio 2010 391 16.1.1 创建项目 395 16.1.2 解决方案和项目的区别 401 16.1.3 windows应用程序代码 403 16.1.4 项目的浏览和编码 404 16.1.5 生成项目 411 16.1.6 调试代码 415 16.2 重构工具 418 16.3 面向多个版本的 .net framework 420 16.4 wpf、wcf、wf等 421 16.4.1 在visual studio 2010 中构建wpf应用程序 421 16.4.2 在visual studio 2010 中构建wf应用程序 423 16.5 小结 424 第17章 部署 425 17.1 部署的规划 425 17.1.1 部署选项 426 17.1.2 部署要求 426 17.1.3 部署.net运行库 427 17.2 简单的部署选项 427 17.2.1 xcopy部署 428 17.2.2 xcopy和web 应用程序 428 17.2.3 发布web站点 429 17.3 visual studio 2010安装 和部署项目 429 17.3.1 windows installer 430 17.3.2 创建安装程序 430 17.4 clickonce 437 17.4.1 clickonce操作 437 17.4.2 发布clickonce 应用程序 438 17.4.3 clickonce设置 438 17.4.4 clickonce文件的 应用程序缓存 439 17.4.5 应用程序的安全性 439 17.5 visual studio 2010 高级选项 440 17.5.1 文件系统编辑器 440 17.5.2 注册表编辑器 440 17.5.3 文件类型编辑器 440 17.5.4 用户界面编辑器 441 17.5.5 自定义动作编辑器 442 17.5.6 launch conditions 编辑器 443 17.6 小结 444 第ⅲ部分 基 础 第18章 程序集 447 18.1 程序集的含义 447 18.1.1 程序集的功能 448 18.1.2 程序集的结构 448 18.1.3 程序集清单 449 18.1.4 名称空间、程序集 和组件 449 18.1.5 私有程序集和共享 程序集 449 18.1.6 附属程序集 450 18.1.7 查看程序集 450 18.2 创建程序集 451 18.2.1 创建模块和程序集 451 18.2.2 程序集的特性 452 18.2.3 动态加载和创建 程序集 454 18.3 应用程序域 457 18.4 共享程序集 461 18.4.1 强名 462 18.4.2 使用强名获得完整性 462 18.4.3 全局程序集缓存 463 18.4.4 创建共享程序集 463 18.4.5 创建强名 464 18.4.6 安装共享程序集 465 18.4.7 使用共享程序集 465 18.4.8 程序集的延迟签名 466 18.4.9 引用 467 18.4.10 本机映像生成器 468 18.5 配置.net应用程序 469 18.5.1 配置类别 469 18.5.2 绑定程序集 470 18.6 版本问题 471 18.6.1 版本号 472 18.6.2 通过编程方式获取版本 472 18.6.3 绑定到程序集版本 473 18.6.4 发行者策略文件 474 18.6.5 运行库的版本 475 18.7 小结 476 第19章 检测 477 19.1 代码协定 477 19.1.1 前提条件 479 19.1.2 后置条件 480 19.1.3 常量 481 19.1.4 接口的协定 481 19.2 跟踪 483 19.2.1 跟踪源 484 19.2.2 跟踪开关 485 19.2.3 跟踪侦听器 486 19.2.4 筛选器 488 19.2.5 相关性 489 19.3 事件日志 492 19.3.1 事件日志体系结构 493 19.3.2 事件日志类 494 19.3.3 创建事件源 494 19.3.4 写入事件日志 495 19.3.5 资源文件 496 19.4 性能监控 500 19.4.1 性能监控类 500 19.4.2 性能计数器生成器 500 19.4.3 添加performance counter组件 503 19.4.4 perfmon.exe 505 19.5 小结 506 第20章 线程、任务和同步 507 20.1 概述 507 20.2 异步委托 508 20.2.1 投票 508 20.2.2 等待句柄 509 20.2.3 异步回调 510 20.3 thread类 512 20.3.1 给线程传递数据 513 20.3.2 后台线程 514 20.3.3 线程的优先级 515 20.3.4 控制线程 515 20.4 线程池 516 20.5 任务 517 20.5.1 启动任务 517 20.5.2 连续的任务 518 20.5.3 任务层次结构 519 20.5.4 任务的结果 520 20.6 parallel类 521 20.6.1 用parallel.for() 方法循环 521 20.6.2 使用parallel.foreach() 方法循环 523 20.6.3 通过parallel.invoke() 方法调用多个方法 524 20.7 取消架构 524 20.7.1 parallel.for()方法 的取消 524 20.7.2 任务的取消 526 20.8 线程问题 527 20.8.1 争用条件 527 20.8.2 死锁 530 20.9 同步 532 20.9.1 lock语句和线程安全 532 20.9.2 interlocked类 538 20.9.3 monitor类 539 20.9.4 spinlock结构 540 20.9.5 waithandle基类 540 20.9.6 mutex类 541 20.9.7 semaphore类 542 20.9.8 events类 544 20.9.9 barrier类 547 20.9.10 readerwriterlockslim 类 549 20.10 timer类 552 20.11 基于事件的异步模式 554 20.11.1 backgroundworker 类 554 20.11.2 启用取消功能 557 20.11.3 启用进度功能 558 20.11.4 创建基于事件的异步 组件 559 20.12 小结 563 第21章 安全性 565 21.1 身份验证和授权 565 21.1.1 标识和principal 565 21.1.2 角色 567 21.1.3 声明基于角色的安全性 567 21.1.4 客户端应用程序服务 568 21.2 加密 573 21.2.1 签名 575 21.2.2 交换密钥和安全传输 576 21.3 资源的访问控制 579 21.4 代码访问安全性 582 21.4.1 第2级安全透明性 582 21.4.2 权限 583 21.5 使用证书发布代码 588 21.6 小结 588 第22章 本地化 591 22.1 system.globalization 名称空间 591 22.1.1 unicode问题 592 22.1.2 区域性和区域 592 22.1.3 使用区域性 596 22.1.4 排序 600 22.2 资源 602 22.2.1 创建资源文件 602 22.2.2 资源文件生成器 602 22.2.3 resourcewriter 603 22.2.4 使用资源文件 604 22.2.5 system.resources 名称空间 607 22.3 使用visual studio的 windows窗体本地化 607 22.3.1 通过编程方式修改 区域性 612 22.3.2 使用自定义资源文件 613 22.3.3 资源的自动回退 614 22.3.4 外包翻译 615 22.4 用asp.net本地化 615 22.5 用wpf本地化 617 22.5.1 用于wpf的.net资源 618 22.5.2 xaml资源字典 619 22.6 自定义资源读取器 622 22.6.1 创建databaseresource reader类 623 22.6.2 创建databaseresource set类 625 22.6.3 创建databaseresource manager类 625 22.6.4 databaseresourcereader 的客户端应用程序 626 22.7 创建自定义区域性 626 22.8 小结 628 第23章 system.transactions 629 23.1 概述 629 23.1.1 事务处理阶段 630 23.1.2 acid属性 630 23.2 数据库和实体类 631 23.3 传统的事务 633 23.3.1 ado.net事务 633 23.3.2 system.enterprise services 634 23.4 system.transactions 635 23.4.1 可提交的事务 636 23.4.2 事务处理的升级 638 23.4.3 依赖事务 640 23.4.4 环境事务 642 23.5 隔离级别 649 23.6 自定义资源管理器 650 23.7 windows 7和windows server 2008的事务 656 23.8 小结 660 第24章 网络 661 24.1 webclient类 661 24.1.1 下载文件 662 24.1.2 基本的webclient示例 662 24.1.3 上传文件 663 24.2 webrequest类和 webresponse类 664 24.2.1 身份验证 666 24.2.2 使用代理 666 24.2.3 异步页面请求 666 24.3 把输出结果显示为 html页面 667 24.3.1 从应用程序中进行 简单的web浏览 667 24.3.2 启动internet explorer 实例 669 24.3.3 给应用程序提供更多 的ie类型特性 669 24.3.4 使用webbrowser控件 打印 674 24.3.5 显示请求页面的代码 674 24.3.6 webrequest类 和webresponse类的 层次结构 676 24.4 实用工具类 676 24.4.1 uri 676 24.4.2 ip地址和dns名称 677 24.5 较低层的协议 679 24.5.1 使用smtpclient 680 24.5.2 使用tcp类 682 24.5.3 tcpsend和tcpreceive 示例 682 24.5.4 tcp和udp 684 24.5.5 udp类 684 24.5.6 socket类 685 24.6 小结 689 第25章 windows服务 691 25.1 windows服务 691 25.2 windows服务的体系结构 692 25.2.1 服务程序 692 25.2.2 服务控制程序 694 25.2.3 服务配置程序 694 25.2.4 windows服务的类 694 25.3 创建windows服务程序 694 25.3.1 创建服务的核心功能 695 25.3.2 quoteclient示例 698 25.3.3 windows服务程序 699 25.3.4 线程和服务 703 25.3.5 服务的安装 704 25.3.6 安装程序 704 25.4 服务的监视和控制 708 25.4.1 mmc管理单元 708 25.4.2 net.exe实用程序 709 25.4.3 sc.exe实用程序 710 25.4.4 visual studio server explorer 710 25.4.5 编写自定义 servicecontroller类 710 25.5 故障排除和事件日志 718 25.6 小结 719 第26章 互操作性 721 26.1 .net和com 721 26.1.1 元数据 722 26.1.2 释放内存 722 26.1.3 接口 722 26.1.4 方法的绑定 724 26.1.5 数据类型 724 26.1.6 注册 724 26.1.7 线程 725 26.1.8 错误处理 726 26.1.9 事件 727 26.2 编组 727 26.3 从.net客户端中使用 com组件 728 26.3.1 创建com组件 728 26.3.2 创建rcw 734 26.3.3 使用rcw 735 26.3.4 使用com服务器和 动态语言扩展 736 26.3.5 线程问题 737 26.3.6 添加连接点 737 26.4 从com客户端中使用 .net组件 739 26.4.1 ccm 740 26.4.2 创建.net组件 740 26.4.3 创建类型库 741 26.4.4 com互操作特性 743 26.4.5 com注册 745 26.4.6 创建com客户端 应用程序 746 26.4.7 添加连接点 747 26.4.8 用sink对象创建 客户端 748 26.5 平台调用 750 26.6 小结 754 第27章 核心xaml 755 27.1 概述 755 27.1.1 元素映射到.net 对象上 756 27.1.2 使用自定义.net类 757 27.1.3 把特性用作属性 759 27.1.4 把特性用作元素 759 27.1.5 基本的.net类型 760 27.1.6 集合 760 27.1.7 构造函数 761 27.2 依赖属性 761 27.2.1 创建依赖类型 762 27.2.2 强制值回调 763 27.2.3 值变更回调和事件 764 27.2.4 事件的冒泡和隧道 764 27.3 附加属性 767 27.4 标记扩展 770 27.5 创建自定义标记扩展 770 27.6 xaml定义的标记扩展 772 27.7 读写xaml 772 27.8 小结 773 第28章 managed extensibility framework 775 28.1 mef的体系结构 775 28.2 协定 782 28.3 导出 783 28.3.1 导出属性和方法 787 28.3.2 导出元数据 789 28.4 导入 791 28.5 容器和出口提供程序 794 28.6 类别 797 28.7 小结 798 第29章 文件和注册表操作 799 29.1 管理文件系统 799 29.1.1 表示文件和文件夹 的.net类 800 29.1.2 path类 803 29.1.3 fileproperties示例 803 29.2 移动、复制和删除文件 808 29.2.1 filepropertiesandmovement 示例 808 29.2.2 filepropertiesandmovement 示例的代码 809 29.3 读写文件 812 29.3.1 读取文件 812 29.3.2 写入文件 814 29.3.3 流 815 29.3.4 缓存的流 816 29.3.5 使用filestream类读写 二进制文件 816 29.3.6 读写文本文件 821 29.4 映射内存的文件 827 29.5 读取驱动器信息 829 29.6 文件的安全性 831 29.6.1 从文件中读取acl 831 29.6.2 从目录中读取acl 832 29.6.3 添加和删除文件中 的acl项 833 29.7 读写注册表 835 29.7.1 注册表 835 29.7.2 .net注册表类 837 29.8 读写独立存储器 839 29.9 小结 844 第ⅳ部分 数 据 第30章 核心ado.net 847 30.1 ado.net概述 847 30.1.1 名称空间 848 30.1.2 共享类 848 30.1.3 数据库专用的类 849 30.2 使用数据库连接 850 30.2.1 管理连接字符串 851 30.2.2 高效地使用连接 852 30.2.3 事务 854 30.3 命令 855 30.3.1 执行命令 856 30.3.2 调用存储过程 860 30.4 快速数据访问: 数据读取器 862 30.5 管理数据和关系: dataset类 865 30.5.1 数据表 866 30.5.2 数据列 866 30.5.3 数据关系 871 30.5.4 数据约束 872 30.6 xml架构:用xsd 生成代码 875 30.7 填充dataset类 881 30.7.1 用数据适配器填充 dataset 882 30.7.2 从xml中填充 dataset类 883 30.8 持久化dataset类的修改 883 30.8.1 通过数据适配器进行 更新 883 30.8.2 写入xml输出结果 886 30.9 使用ado.net 887 30.9.1 分层开发 887 30.9.2 生成sql server的键 888 30.9.3 命名约定 891 30.10 小结 892 第31章 ado.net entity framework 893 31.1 ado.net entity framework概述 893 31.2 entity framework映射 894 31.2.1 逻辑层 895 31.2.2 概念层 897 31.2.3 映射层 898 31.3 entity client 899 31.3.1 连接字符串 900 31.3.2 entity sql 900 31.4 实体 901 31.5 对象上下文 904 31.6 关系 906 31.6.1 一个层次结构一个表 907 31.6.2 一种类型一个表 908 31.6.3 懒惰加载、延迟加载 和预先加载 909 31.7 对象查询 910 31.8 更新 913 31.8.1 对象跟踪 913 31.8.2 改变信息 914 31.8.3 附加和分离实体 916 31.8.4 存储实体的变化 916 31.9 linq to entities 917 31.10 小结 918 第32章 数据服务 919 32.1 概述 919 32.2 包含clr对象的自定义 宿主 920 32.2.1 clr对象 920 32.2.2 数据模型 922 32.2.3 数据服务 923 32.2.4 驻留服务 923 32.2.5 其他服务操作 924 32.3 http客户端应用程序 925 32.4 使用wcf数据服务和 ado.net entity framework 929 32.4.1 asp.net宿主和edm 929 32.4.2 使用system.data .service.client的.net 应用程序 931 32.5 小结 938 第33章 处理xml 939 33.1 .net支持的xml标准 940 33.2 system.xml名称空间 940 33.3 使用system.xml类 941 33.4 读写流格式的xml 942 33.4.1 使用 xmlreader类 942 33.4.2 使用xmlreader类进行 验证 946 33.4.3 使用xmlwriter类 947 33.5 在.net中使用dom 949 33.6 使用xpathnavigator类 954 33.6.1 system.xml.xpath 名称空间 954 33.6.2 system.xml.xsl 名称空间 959 33.6.3 调试xslt 963 33.7 xml和ado.net 965 33.7.1 将ado.net数据 转换为xml文档 965 33.7.2 把xml文档转换为 ado.net数据 970 33.8 在xml中序列化对象 972 33.9 linq to xml和.net 982 33.10 使用不同的xml对象 982 33.10.1 xdocument对象 982 33.10.2 xelement对象 983 33.10.3 xnamespace对象 984 33.10.4 xcomment对象 986 33.10.5 xattribute对象 986 33.11 使用linq查询xml 文档 987 33.11.1 查询静态的xml 文档 987 33.11.2 查询动态的xml 文档 989 33.12 xml文档的更多查询 技术 990 33.12.1 读取xml文档 990 33.12.2 写入xml文档 992 33.13 小结 993 第34章 .net编程和sql server 995 34.1 .net运行库的宿主 995 34.2 microsoft.sqlserver.server 997 34.3 用户定义的类型 998 34.3.1 创建udt 998 34.3.2 通过sql使用udt 1003 34.3.3 从客户端代码中使用 udt 1004 34.4 用户定义的聚合函数 1005 34.4.1 创建用户定义的 聚合函数 1006 34.4.2 使用用户定义的 聚合函数 1007 34.5 存储过程 1007 34.5.1 创建存储过程 1008 34.5.2 使用存储过程 1009 34.6 用户定义的函数 1010 34.6.1 创建用户定义的函数 1010 34.6.2 使用用户定义的函数 1010 34.7 触发器 1011 34.7.1 创建触发器 1011 34.7.2 使用触发器 1012 34.8 xml数据类型 1013 34.8.1 包含xml数据的表 1013 34.8.2 读取xml值 1014 34.8.3 数据的查询 1017 34.8.4 xml数据修改语言 (xml dml) 1019 34.8.5 xml索引 1020 34.8.6 强类型化的xml 1021 34.9 小结 1022 第ⅴ部分 显 示 第35章 核心wpf 1025 35.1 概述 1025 35.1.1 名称空间 1025 35.1.2 类层次结构 1027 35.2 形状 1028 35.3 几何图形 1030 35.4 变换 1032 35.5 画笔 1033 35.5.1 solidcolorbrush 1033 35.5.2 lineargradientbrush 1034 35.5.3 radialgradientbrush 1034 35.5.4 drawingbrush 1035 35.5.5 imagebrush 1035 35.5.6 visualbrush 1036 35.6 控件 1037 35.6.1 简单控件 1037 35.6.2 内容控件 1038 35.6.3 带标题的内容控件 1039 35.6.4 项控件 1040 35.6.5 带标题的项控件 1041 35.6.6 修饰 1041 35.7 布局 1042 35.7.1 stackpanel 1042 35.7.2 wrappanel 1043 35.7.3 canvas 1044 35.7.4 dockpanel 1044 35.7.5 grid 1045 35.8 样式和资源 1046 35.8.1 样式 1046 35.8.2 资源 1048 35.8.3 系统资源 1049 35.8.4 从代码中访问资源 1050 35.8.5 动态资源 1050 35.8.6 资源字典 1051 35.9 触发器 1052 35.9.1 属性触发器 1053 35.9.2 多触发器 1054 35.9.3 数据触发器 1055 35.10 模板 1056 35.10.1 控件模板 1057 35.10.2 数据模板 1060 35.10.3 样式化列表框 1061 35.10.4 itemtemplate 1062 35.10.5 列表框元素的控件 模板 1064 35.11 动画 1066 35.11.1 时间轴 1066 35.11.2 非线性动画 1069 35.11.3 事件触发器 1069 35.11.4 关键帧动画 1072 35.12 可见状态管理器 1073 35.13 3-d 1076 35.13.1 模型 1077 35.13.2 照相机 1079 35.13.3 光线 1079 35.13.4 旋转 1079 35.14 小结 1080 第36章 用wpf编写业务 应用程序 1083 36.1 数据绑定 1083 36.1.1 booksdemo应用程序 1084 36.1.2 用xaml绑定 1086 36.1.3 简单对象的绑定 1088 36.1.4 更改通知 1090 36.1.5 对象数据提供程序 1092 36.1.6 列表绑定 1094 36.1.7 主从绑定 1096 36.1.8 多绑定 1097 36.1.9 优先绑定 1099 36.1.10 值的转换 1100 36.1.11 动态添加列表项 1102 36.1.12 数据模板选择器 1103 36.1.13 绑定到xml上 1105 36.1.14 绑定的验证 1107 36.2 commanding 1111 36.2.1 定义命令 1112 36.2.2 定义命令源 1113 36.2.3 命令绑定 1113 36.3 treeview 1114 36.4 datagrid 1118 36.4.1 自定义列 1120 36.4.2 行的细节 1121 36.4.3 用datagrid进行分组 1121 36.5 小结 1124 第37章 用wpf创建文档 1125 37.1 文本元素 1125 37.1.1 字体 1125 37.1.2 texteffect 1127 37.1.3 内联 1128 37.1.4 块 1130 37.1.5 列表 1132 37.1.6 表 1132 37.1.7 块的锚定 1134 37.2 流文档 1135 37.3 固定文档 1136 37.4 xps文档 1140 37.5 打印 1141 37.5.1 用printdialog打印 1142 37.5.2 打印可见元素 1142 37.6 小结 1144 第38章 silverlight 1145 38.1 wpf和silverlight的比较 1145 38.2 创建silverlight项目 1146 38.3 导航 1148 38.4 网络 1152 38.4.1 创建ado.net entity data model 1153 38.4.2 为silverlight客户端 创建wcf服务 1153 38.4.3 调用wcf服务 1155 38.4.4 使用wcf数据服务 1158 38.4.5 使用system.net访问 服务 1160 38.5 浏览器集成 1162 38.5.1 调用javascript 1162 38.5.2 javascript调用 silverlight 1163 38.6 在浏览器外运行的 silverlight应用程序 1164 38.7 小结 1167 第39章 windows窗体 1169 39.1 创建windows窗体 应用程序 1169 39.2 control类 1175 39.2.1 大小和位置 1175 39.2.2 外观 1176 39.2.3 用户交互操作 1176 39.2.4 windows功能 1177 39.2.5 其他功能 1177 39.3 标准控件和组件 1178 39.3.1 button控件 1178 39.3.2 checkbox控件 1178 39.3.3 radiobutton控件 1179 39.3.4 combobox控件、 listbox控件和 checkedlistbox控件 1179 39.3.5 datagridview控件 1180 39.3.6 datetimepicker控件 1188 39.3.7 errorprovider组件 1188 39.3.8 imagelist组件 1189 39.3.9 label控件 1189 39.3.10 listview控件 1189 39.3.11 picturebox控件 1189 39.3.12 progressbar控件 1190 39.3.13 textbox控件、 richtextbox控件与 maskedtextbox控件 1190 39.3.14 panel控件 1191 39.3.15 flowlayoutpanel和 tablelayoutpanel 控件 1191 39.3.16 splitcontainer控件 1192 39.3.17 tabcontrol控件和 tabpages控件 1192 39.3.18 toolstrip控件 1193 39.3.19 menustrip控件 1194 39.3.20 contextmenustrip 控件 1194 39.3.21 toolstripmenuitem 控件 1194 39.3.22 toolstripmanager类 1194 39.3.23 toolstripcontainer 控件 1195 39.4 窗体 1195 39.4.1 form类 1195 39.4.2 多文档界面 1199 39.4.3 创建自己的用户控件 1200 39.5 小结 1200 第40章 核心asp.net 1201 40.1 asp.net概述 1201 40.1.1 asp.net文件的 处理方式 1202 40.1.2 web站点和web 应用程序 1202 40.1.3 asp.net中的状态 管理 1203 40.2 asp.net web窗体 1203 40.2.1 asp.net代码模型 1207 40.2.2 asp.net服务器控件 1208 40.3 ado.net和数据绑定 1222 40.3.1 更新事件登记 应用程序 1222 40.3.2 数据绑定的更多内容 1229 40.4 应用程序配置 1234 40.5 小结 1236 第41章 asp.net的功能 1237 41.1 用户控件和自定义控件 1238 41.1.1 用户控件 1238 41.1.2 pcsdemosite中的 用户控件 1242 41.1.3 自定义控件 1243 41.2 母版页 1247 41.2.1 在web页面中 访问母版页 1248 41.2.2 嵌套的母版页 1248 41.2.3 pcsdemosite中 的母版页 1249 41.3 站点导航 1250 41.3.1 添加站点地图文件 1251 41.3.2 pcsdemosite中 的导航 1252 41.4 安全性 1253 41.4.1 使用security setup 添加forms身份验证 功能 1254 41.4.2 实现登录系统 1255 41.4.3 web 登录服务器控件 1255 41.4.4 保护目录 1256 41.4.5 pcsdemosite中的 安全性 1257 41.5 主题 1259 41.5.1 把主题应用于页面 1259 41.5.2 定义主题 1260 41.5.3 pcsdemosite中的 主题 1260 41.6 web部件 1263 41.6.1 web部件应用程序 组件 1263 41.6.2 web部件示例 1264 41.7 asp.net ajax 1270 41.8 ajax的概念 1271 41.9 asp.net ajax 1273 41.9.1 核心功能 1273 41.9.2 asp.net ajax control toolkit 1275 41.10 asp.net ajax网站 示例 1276 41.11 支持asp.net ajax的 网站配置 1278 41.12 添加asp.net ajax 功能 1279 41.12.1 scriptmanager控件 1280 41.12.2 使用updatepanel 控件 1281 41.12.3 使用updateprogress 1283 41.12.4 使用扩展控件 1284 41.13 使用ajax库 1286 41.13.1 给web页面添加 javascript 1286 41.13.2 全局实用程序函数 1287 41.13.3 使用ajax库 javascript oop 扩展 1287 41.13.4 pagerequestmanager 对象和application 对象 1289 41.13.5 javascript的调试 1292 41.13.6 异步调用web方法 1293 41.13.7 asp.net应用程序 服务 1294 41.14 小结 1294 第42章 asp.net动态数据 和mvc 1297 42.1 路由 1298 42.1.1 查询字符串参数 1298 42.1.2 定义路由 1300 42.1.3 使用路由参数 1303 42.2 动态数据 1305 42.2.1 创建动态数据网站 1305 42.2.2 定制动态数据网站 1310 42.2.3 进一步开发 1314 42.3 mvc 1314 42.3.1 mvc的含义 1314 42.3.2 asp.net mvc的 含义 1315 42.3.3 简单的asp.net mvc 应用程序 1315 42.3.4 定制asp.net mvc 应用程序 1321 42.3.5 进一步开发 1329 42.4 小结 1330 第ⅵ部分 通 信 第43章 wcf 1333 43.1 wcf概述 1333 43.1.1 soap 1335 43.1.2 wsdl 1335 43.1.3 rest 1335 43.1.4 json 1336 43.2 简单的服务和客户端 1336 43.2.1 服务协定 1337 43.2.2 服务的实现 1338 43.2.3 wcf服务宿主和 wcf测试客户端 1338 43.2.4 自定义服务宿主 1340 43.2.5 wcf客户端 1342 43.2.6 诊断 1343 43.3 协定 1345 43.3.1 数据协定 1345 43.3.2 版本问题 1346 43.3.3 服务协定 1346 43.3.4 消息协定 1347 43.4 服务的实现 1348 43.4.1 以编程方式创建 客户端 1351 43.4.2 错误处理 1352 43.5 绑定 1353 43.6 宿主 1356 43.6.1 自定义宿主 1356 43.6.2 was宿主 1357 43.6.3 预配置的宿主类 1357 43.7 客户端 1358 43.8 双工通信 1360 43.9 小结 1362 第44章 windows wf 4 1363 44.1 hello world示例 1363 44.2 活动 1365 44.2.1 if活动 1366 44.2.2 invokemethod活动 1367 44.2.3 parallel活动 1367 44.2.4 delay活动 1368 44.2.5 pick活动 1368 44.3 自定义活动 1369 44.3.1 活动的验证 1370 44.3.2 设计器 1371 44.3.3 自定义复合活动 1373 44.4 工作流 1375 44.4.1 实参和变量 1376 44.4.2 workflowapplication 1377 44.4.3 workflowservicehost 1381 44.4.4 驻留设计器 1386 44.5 小结 1391 第45章 对等网络 1393 45.1 p2p网络概述 1393 45.1.1 客户端-服务器体系 结构 1393 45.1.2 p2p体系结构 1394 45.1.3 p2p体系结构的挑战 1395 45.1.4 p2p术语 1396 45.1.5 p2p解决方案 1396 45.2 microsoft windows peer-to-peer networking 1396 45.2.1 pnrp 1396 45.2.2 people near me 1399 45.3 构建p2p应用程序 1400 45.3.1 system.net.peertopeer 1400 45.3.2 system.net.peertopeer .collaboration 1405 45.4 小结 1408 第46章 消息队列 1409 46.1 概述 1409 46.1.1 使用消息队列的场合 1410 46.1.2 消息队列功能 1411 46.2 message queuing产品 1412 46.3 消息队列体系结构 1412 46.3.1 消息 1413 46.3.2 消息队列 1413 46.4 message queuing 管理工具 1414 46.4.1 创建消息队列 1414 46.4.2 消息队列属性 1415 46.5 消息队列的编程实现 1415 46.5.1 创建消息队列 1415 46.5.2 查找队列 1416 46.5.3 打开已知队列 1417 46.5.4 发送消息 1418 46.5.5 接收消息 1421 46.6 课程订单应用程序 1423 46.6.1 课程订单类库 1423 46.6.2 课程订单消息 发送程序 1424 46.6.3 发送优先级和可恢复 的消息 1425 46.6.4 课程订单消息接收 程序 1426 46.7 接收结果 1429 46.7.1 确认队列 1430 46.7.2 响应队列 1430 46.8 事务队列 1431 46.9 消息队列和wcf 1432 46.9.1 带数据协定的实体类 1432 46.9.2 wcf服务协定 1433 46.9.3 wcf消息接收 应用程序 1434 46.9.4 wcf消息发送 应用程序 1437 46.10 消息队列的安装 1438 46.11 小结 1438 第47章 syndication 1441 47.1 system.servicemodel. syndication名称空间 概述 1441 47.2 读取联合源的示例 1442 47.3 联合源的示例 1444 47.4 小结 1449 第ⅶ部分 附 录 附录a 1453 ***以下内容见随书附赠光盘*** 第48章 使用gdi+绘图 e1 48.1 理解绘图规则 e1 48.1.1 gdi和gdi+ e2 48.1.2 绘制图形 e3 48.1.3 使用onpaint()方法 绘制图形 e6 48.1.4 使用剪切区域 e7 48.2 测量坐标和区域 e9 48.2.1 point和pointf结构 e9 48.2.2 size和sizef结构 e10 48.2.3 rectangle和rectanglef 结构 e11 48.2.4 region e12 48.3 调试须知 e13 48.4 绘制可滚动的窗口 e14 48.5 世界、页面和设备坐标 e18 48.6 颜色 e19 48.6.1 rgb值 e19 48.6.2 命名颜色 e20 48.6.3 图形显示模式和安全 的调色板 e20 48.6.4 安全调色板 e21 48.7 画笔和钢笔 e21 48.7.1 画笔 e22 48.7.2 钢笔 e23 48.8 绘制图形和线条 e23 48.9 显示图像 e25 48.10 处理图像时的问题 e27 48.11 绘制文本 e28 48.12 简单的文本示例 e29 48.13 字体和字体系列 e30 48.14 示例:枚举字体系列 e31 48.15 编辑文本文档: capseditor示例 e33 48.15.1 invalidate()方法 e37 48.15.2 计算项的大小和文档 的大小 e38 48.15.3 onpaint()方法 e39 48.15.4 坐标转换 e41 48.15.5 响应用户的输入 e42 48.16 打印 e45 48.17 小结 e50 第49章 vsto e51 49.1 vsto概述 e51 49.1.1 项目类型 e52 49.1.2 项目功能 e54 49.2 vsto项目基础 e55 49.2.1 office对象模型 e55 49.2.2 vsto名称空间 e55 49.2.3 宿主项和宿主控件 e56 49.2.4 基本的vsto项目 结构 e57 49.2.5 globals类 e60 49.2.6 事件处理 e60 49.3 构建vsto解决方案 e61 49.3.1 管理应用程序级插件 e62 49.3.2 与应用程序和文档 交互操作 e63 49.3.3 ui的自定义 e64 49.4 示例应用程序 e68 49.5 小结 e78 第50章 maf e79 50.1 maf体系结构 e79 50.1.1 管道 e80 50.1.2 发现 e81 50.1.3 激活和隔离 e82 50.1.4 协定 e83 50.1.5 生命周期 e84 50.1.6 版本问题 e85 50.2 插件示例 e86 50.2.1 插件协定 e86 50.2.2 计算器插件视图 e87 50.2.3 计算器插件适配器 e88 50.2.4 计算器插件 e90 50.2.5 计算器宿主视图 e91 50.2.6 计算机宿主适配器 e91 50.2.7 计算器宿主 e93 50.2.8 其他插件 e97 50.3 小结 e97 第51章 enterprise services e99 51.1 使用enterprise services e99 51.1.1 简史 e100 51.1.2 使用enterprise services 的场合 e100 51.1.3 重要功能 e101 51.2 创建简单的com+应用 程序 e103 51.2.1 servicedcomponent类 e103 51.2.2 程序集的属性 e103 51.2.3 创建组件 e104 51.3 部署 e106 51.3.1 自动部署 e106 51.3.2 手工部署 e106 51.3.3 创建安装软件包 e106 51.4 组件服务管理器 e107 51.5 客户端应用程序 e108 51.6 事务 e109 51.6.1 事务的特性 e109 51.6.2 事务的结果 e110 51.7 示例应用程序 e111 51.7.1 实体类 e111 51.7.2 ordercontrol组件 e113 51.7.3 orderdata组件 e114 51.7.4 orderlinedata组件 e116 51.7.5 客户端应用程序 e117 51.8 集成wcf和enterprise services e118 51.8.1 wcf服务外观 e118 51.8.2 客户端应用程序 e122 51.9 小结 e123 第52章 目录服务 e125 52.1 active directory的 体系结构 e126 52.1.1 active directory的 功能 e126 52.1.2 active directory的 概念 e126 52.1.3 active directory数据 的特征 e129 52.1.4 指定架构 e130 52.2 active directory的 管理工具 e131 52.2.1 active directory users and computers工具 e131 52.2.2 adsi edit工具 e132 52.3 active directory编程 e133 52.3.1 system.directoryservices 名称空间中的类 e134 52.3.2 绑定到directory services e134 52.3.3 获取目录项 e138 52.3.4 对象集合 e140 52.3.5 缓存 e141 52.3.6 创建新对象 e141 52.3.7 更新目录项 e142 52.3.8 访问本地adsi对象 e143 52.3.9 在active directory 中搜索 e144 52.4 搜索用户对象 e148 52.4.1 用户界面 e148 52.4.2 获取架构命名上下文 e149 52.4.3 获取user类的属性名 e149 52.4.4 搜索用户对象 e150 52.5 账户管理 e152 52.5.1 显示用户信息 e152 52.5.2 创建用户 e153 52.5.3 重置密码 e153 52.5.4 创建组 e154 52.5.5 在组中添加用户 e154 52.5.6 查找用户 e154 52.6 dsml e155 52.6.1 system.directoryservices. protocols名称空间中 的类 e156 52.6.2 用dsml搜索 active directory对象 e156 52.7 小结 e157 第53章 c#、visual basic、 c++/cli和f# e159 53.1 名称空间 e160 53.2 定义类型 e161 53.2.1 引用类型 e161 53.2.2 值类型 e162 53.2.3 类型推断 e163 53.2.4 接口 e164 53.2.5 枚举 e165 53.3 方法 e166 53.3.1 方法的参数和返回 类型 e166 53.3.2 参数修饰符 e167 53.3.3 构造函数 e168 53.3.4 属性 e170 53.3.5 对象初始值设定项 e171 53.3.6 扩展方法 e171 53.4 静态成员 e172 53.5 数组 e173 53.6 控制语句 e174 53.6.1 if语句 e174 53.6.2 条件操作符 e174 53.6.3 switch语句 e175 53.7 循环 e176 53.7.1 for语句 e176 53.7.2 while和do…while 语句 e177 53.7.3 foreach语句 e178 53.8 异常处理 e178 53.9 继承 e180 53.9.1 访问修饰符 e180 53.9.2 关键字 e181 53.10 资源管理 e183 53.10.1 idisposable接口的 实现 e183 53.10.2 using语句 e184 53.10.3 重写finalize()方法 e184 53.11 委托 e186 53.12 事件 e188 53.13 泛型 e190 53.14 linq查询 e192 53.15 c++/cli混合本地代码 和托管代码 e192 53.16 c#的特殊功能 e193 53.17 小结 e194 第54章 .net remoting e195 54.1 使用.net remoting的 原因 e195 54.2 .net remoting术语详解 e197 54.2.1 客户端通信 e198 54.2.2 服务器端通信 e199 54.3 上下文 e199 54.3.1 激活 e200 54.3.2 特性和属性 e200 54.3.3 上下文之间的通信 e201 54.4 远程对象、客户端和 服务器 e201 54.4.1 远程对象 e201 54.4.2 简单的服务器应用 程序 e202 54.4.3 简单的客户端应用 程序 e203 54.5 .net remoting体系结构 e204 54.5.1 信道 e204 54.5.2 格式化程序 e207 54.5.3 channelservices和 remotingconfiguration e207 54.5.4 对象的激活 e209 54.5.5 消息接收器 e212 54.5.6 在远程方法中传递对象 e213 54.5.7 生命周期管理 e216 54.6 配置文件 e218 54.6.1 知名对象的服务器 配置 e220 54.6.2 知名对象的客户端 配置 e220 54.6.3 客户端激活的对象的 服务器配置 e221 54.6.4 客户端激活的对象的 客户端配置 e222 54.6.5 使用配置文件的 服务器代码 e222 54.6.6 使用配置文件的 客户端代码 e223 54.6.7 客户端信道的延迟 加载 e223 54.6.8 调试配置 e224 54.6.9 配置文件中的生命 周期服务 e224 54.6.10 格式化程序提供程序 e225 54.7 在asp.net中驻留远程 服务器 e225 54.8 类、接口和soapsuds e227 54.8.1 接口 e227 54.8.2 soapsuds e227 54.9 异步远程调用 e228 54.9.1 使用委托和 .net remoting e228 54.9.2 oneway特性 e229 54.10 .net remoting的 安全性 e229 54.11 远程处理和事件 e230 54.11.1 远程对象 e231 54.11.2 事件参数 e232 54.11.3 服务器 e233 54.11.4 服务器配置文件 e233 54.11.5 事件接收器 e234 54.11.6 客户端 e234 54.11.7 客户端配置文件 e235 54.11.8 运行程序 e236 54.12 调用上下文 e236 54.13 小结 e237 第55章 web服务和asp.net e239 55.1 soap e240 55.2 wsdl e241 55.3 web服务 e242 55.3.1 提供web服务 e242 55.3.2 使用web服务 e246 55.4 扩充事件登记示例 e248 55.4.1 事件登记 web服务 e249 55.4.2 事件登记客户端 e253 55.5 使用soap标题交换 数据 e256 55.6 小结 e261 第56章 linq to sql e263 56.1 linq to sql和 visual studio 2010 e264 56.1.1 调用products表 e265 56.1.2 添加linq to sql类 e265 56.1.3 o/r设计器概述 e266 56.1.4 创建product对象 e267 56.2 对象如何映射到linq 对象上 e269 56.2.1 datacontext对象 e270 56.2.2 table[tentity]对象 e274 56.3 脱离o/r设计器工作 e274 56.3.1 创建自己的自定义 对象 e274 56.3.2 通过自定义对象和 linq查询 e275 56.3.3 通过查询限制所调用 的列 e276 56.3.4 使用列名 e277 56.3.5 创建自己的 datacontext对象 e278 56.4 自定义对象和o/r 设计器 e279 56.5 查询数据库 e280 56.5.1 使用查询表达式 e280 56.5.2 查询表达式 e281 56.5.3 使用表达式筛选 e282 56.5.4 执行连接 e282 56.5.5 分组项 e284 56.6 存储过程 e285 56.7 小结 e286 第57章 wpf 3.0 e287 57.1 hello world示例 e287 57.2 活动 e288 57.2.1 ifelseactivity e289 57.2.2 parallelactivity e290 57.2.3 callexternalmethod activity e291 57.2.4 delayactivity e291 57.2.5 listenactivity e292 57.2.6 活动执行模型 e293 57.3 自定义活动 e293 57.3.1 活动的验证 e295 57.3.2 主题和设计器 e296 57.3.3 activitytoolboxitem 和图标 e297 57.3.4 自定义复合活动 e299 57.4 工作流 e305 57.4.1 顺序工作流 e305 57.4.2 状态机工作流 e305 57.4.3 给工作流传递参数 e307 57.4.4 从工作流中返回结果 e308 57.4.5 将参数绑定到活动上 e309 57.5 工作流运行库 e310 57.6 工作流服务 e310 57.6.1 持久性服务 e312 57.6.2 跟踪服务 e313 57.6.3 自定义服务 e315 57.7 与wcf集成 e316 57.8 驻留工作流 e318 57.9 工作流设计器 e319 57.10 从wf 3.x迁移到wf 4 e320 57.10.1 把活动代码提取到 服务中 e320 57.10.2 删除代码活动 e320 57.10.3 同时运行wf 3.x 和4 e321 57.10.4 考虑把状态机迁移到 流程图上 e321 57.11 小结 e321 ................ ..................
10.0MB
《C#高级编程第七版》中文(ProfessionalC#4.0and.NET4)[共十卷][VOL7]
2011-05-26该版本已添加目录标签 并修正了一些错误 中文名: C#高级编程 第七版 原名: Professional C# 4.0 and .NET 4 别名: C#高级编程(第7版) 作者: (美)Christian Nagel Bill Evjen Jay Glynn.译者: 无.资源格式: PDF 版本: 影印版 出版社: worx.书号: ISBN:9787302239376.发行时间: 2010年 地区: 大陆 语言: 中文 本书是Wrox畅销书,C#经典名著!2009年度全行业优秀畅销书。自第一版出版以来,都是国内读者的普遍好评,累计销量近十万册。 《C#高级编程(第7版)》的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写 Windows应用程序和ASP.NET Web应用程序。 本书几乎涵盖C#语言的所有功能,对于C#初学者和有经验的程序员是值得大力推荐的书籍。实践证明,本书是关于C# 和 Visual Studio的一本全面 而且权威的参考书。 新的C# 4对于在Visual Studio 2010中编写代码是必不可少的。这本实用指南强调,C#是编写.NET 4应用程序的首选语言。《C#高级编程(第7版)》 的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写Windows应用程序和ASP.NET Web应用程序。 本书主要内容 ◆ 回顾.NET体系结构、对象、泛型、继承、数组、运算符、类型强制转换、委托、事件、Lambda表达式等 ◆ 详细论述C#中的动态对象、命名参数和可选参数、COM专用的交互操作功能、安全类型变体 ◆ 阐述.NET 4的新增功能、WF 4、ADO.NET 数据服务、MEF、并行任务库和PLINQ ◆ 深入探讨LINQ、WCF、WPF、流文档和固定文档及Silverlight等功能强大的技术 ◆ 回顾ASP.NET编程,介绍ASP.NET MVC和ASP.NET 动态数据等新功能 ◆ 讨论使用WCF、MSMQ、点对点和联合进行通信 目录: 第ⅰ部分 c# 语 言 第1章 .net体系结构 3 1.1 c#与.net的关系 3 1.2 公共语言运行库 4 1.2.1 平台无关性 4 1.2.2 提高性能 4 1.2.3 语言的互操作性 5 1.3 中间语言 6 1.3.1 面向对象和接口的支持 6 1.3.2 不同的值类型和引用类型 7 1.3.3 强数据类型化 8 1.3.4 通过异常处理错误 12 1.3.5 特性的使用 13 1.4 程序集 13 1.4.1 私有程序集 14 1.4.2 共享程序集 14 1.4.3 反射 14 1.4.4 并行编程 15 1.5 .net framework类 15 1.6 名称空间 16 .1.7 用c#创建.net应用程序 16 1.7.1 创建asp.net应用程序 16 1.7.2 创建windows窗体 18 1.7.3 使用wpf 18 1.7.4 windows控件 19 1.7.5 windows服务 19 1.7.6 wcf 19 1.7.7 windows wf 19 1.8 c#在.net企业体系结构 中的作用 19 1.9 小结 21 第2章 核心c# 23 2.1 第一个c#程序 23 2.1.1 代码 24 2.1.2 编译并运行程序 24 2.1.3 详细介绍 25 2.2 变量 26 2.2.1 变量的初始化 27 2.2.2 类型推断 28 2.2.3 变量的作用域 29 2.2.4 常量 31 2.3 预定义数据类型 32 2.3.1 值类型和引用类型 32 2.3.2 cts类型 33 2.3.3 预定义的值类型 33 2.3.4 预定义的引用类型 36 2.4 流控制 38 2.4.1 条件语句 38 2.4.2 循环 42 2.4.3 跳转语句 45 2.5 枚举 46 2.6 名称空间 47 2.6.1 using语句 49 2.6.2 名称空间的别名 49 2.7 main()方法 50 2.7.1 多个main()方法 50 2.7.2 给main()方法传递参数 52 2.8 有关编译c#文件的更多内容 52 2.9 控制台i/o 54 2.10 使用注释 56 2.10.1 源文件中的内部注释 56 2.10.2 xml文档 56 2.11 c#预处理器指令 58 2.11.1 #define和 #undef 59 2.11.2 #if, #elif, #else和#endif 59 2.11.3 #warning和 # error 60 2.11.4 #region和#endregion 61 2.11.5 #line 61 2.11.6 #pragma 61 2.12 c#编程规则 62 2.12.1 关于标识符的规则 62 2.12.2 用法约定 63 2.13 小结 68 第3章 对象和类型 69 3.1 类和结构 69 3.2 类 70 3.2.1 数据成员 70 3.2.2 函数成员 71 3.2.3 只读字段 83 3.3 匿名类型 84 3.4 结构 85 3.4.1 结构是值类型 86 3.4.2 结构和继承 87 3.4.3 结构的构造函数 87 3.5 部分类 87 3.6 静态类 89 3.7 object类 89 3.7.1 system.object()方法 90 3.7.2 tostring()方法 90 3.8 扩展方法 92 3.9 小结 93 第4章 继承 95 4.1 继承的类型 95 4.1.1 实现继承和接口继承 95 4.1.2 多重继承 95 4.1.3 结构和类 96 4.2 实现继承 96 4.2.1 虚方法 97 4.2.2 隐藏方法 98 4.2.3 调用函数的基类版本 99 4.2.4 抽象类和抽象函数 100 4.2.5 密封类和密封方法 100 4.2.6 派生类的构造函数 101 4.3 修饰符 106 4.3.1 可见性修饰符 106 4.3.2 其他修饰符 106 4.4 接口 107 4.4.1 定义和实现接口 108 4.4.2 派生的接口 111 4.5 小结 113 第5章 泛型 115 5.1 概述 115 5.1.1 性能 116 5.1.2 类型安全 117 5.1.3 二进制代码的重用 117 5.1.4 代码的扩展 117 5.1.5 命名约定 118 5.2 创建泛型类 118 5.3 泛型类的功能 122 5.3.1 默认值 123 5.3.2 约束 123 5.3.3 继承 126 5.3.4 静态成员 127 5.4 泛型接口 127 5.4.1 协变和抗变 128 5.4.2 泛型接口的协变 129 5.4.3 泛型接口的抗变 130 5.5 泛型结构 131 5.6 泛型方法 134 5.6.1 泛型方法示例 134 5.6.2 带约束的泛型方法 135 5.6.3 带委托的泛型方法 136 5.6.4 泛型方法规范 137 5.7 小结 138 第6章 数组 139 6.1 简单数组 139 6.1.1 数组的声明 139 6.1.2 数组的初始化 139 6.1.3 访问数组元素 140 6.1.4 使用引用类型 141 6.2 多维数组 142 6.3 锯齿数组 143 6.4 array类 144 6.4.1 创建数组 145 6.4.2 复制数组 146 6.4.3 排序 147 6.5 数组作为参数 150 6.5.1 数组协变 151 6.5.2 arraysegment[t] 151 6.6 枚举 152 6.6.1 ienumerator接口 152 6.6.2 foreach语句 153 6.6.3 yield语句 153 6.7 元组 158 6.8 结构比较 159 6.9 小结 162 第7章 运算符和类型强制转换 163 7.1 运算符 163 7.1.1 运算符的简化操作 165 7.1.2 运算符的优先级 169 7.2 类型的安全性 169 7.2.1 类型转换 170 7.2.2 装箱和拆箱 173 7.3 比较对象的相等性 174 7.3.1 比较引用类型的相等性 174 7.3.2 比较值类型的相等性 175 7.4 运算符重载 176 7.4.1 运算符的工作方式 177 7.4.2 运算符重载的示例: vector结构 178 7.5 用户定义的类型强制转换 185 7.5.1 实现用户定义的类型 强制转换 186 7.5.2 多重类型强制转换 192 7.6 小结 195 第8章 委托、lambda表达式 和事件 197 8.1 委托 197 8.1.1 声明委托 198 8.1.2 使用委托 199 8.1.3 简单的委托示例 202 8.1.4 action[t]和func[t] 委托 204 8.1.5 bubblesorter示例 204 8.1.6 多播委托 207 8.1.7 匿名方法 210 8.2 lambda表达式 211 8.2.1 参数 212 8.2.2 多行代码 212 8.2.3 lambda表达式外部的 变量 213 8.3 事件 214 8.3.1 事件发布程序 214 8.3.2 事件侦听器 216 8.3.3 弱事件 217 8.4 小结 220 第9章 字符串和正则表达式 221 9.1 system.string类 221 9.1.1 创建字符串 222 9.1.2 stringbuilder成员 225 9.1.3 格式字符串 226 9.2 正则表达式 231 9.2.1 正则表达式概述 232 9.2.2 regularexpressions playaround示例 233 9.2.3 显示结果 235 9.2.4 匹配、组合和捕获 237 9.3 小结 238 第10章 集合 239 10.1 集合接口和类型 239 10.2 列表 240 10.2.1 创建列表 241 10.2.2 只读集合 250 10.3 队列 250 10.4 栈 254 10.5 链表 256 10.6 有序列表 261 10.7 字典 262 10.7.1 键的类型 263 10.7.2 字典示例 264 10.7.3 lookup类 268 10.7.4 有序字典 269 10.8 集 269 10.9 可观察的集合 271 10.10 位数组 272 10.10.1 bitarray类 273 10.10.2 bitvector32结构 275 10.11 并发集合 277 10.12 性能 279 10.13 小结 281 第11章 linq 283 11.1 linq概述 283 11.1.1 列表和实体 283 11.1.2 linq查询 287 11.1.3 扩展方法 288 11.1.4 推迟查询的执行 289 11.2 标准的查询操作符 291 11.2.1 筛选 293 11.2.2 用索引筛选 293 11.2.3 类型筛选 294 11.2.4 复合的from子句 294 11.2.5 排序 295 11.2.6 分组 296 11.2.7 对嵌套的对象分组 297 11.2.8 连接 298 11.2.9 集合操作 300 11.2.10 合并 301 11.2.11 分区 302 11.2.12 聚合操作符 303 11.2.13 转换 304 11.2.14 生成操作符 305 11.3 并行linq 306 11.3.1 并行查询 306 11.3.2 分区器 307 11.3.3 取消 307 11.4 表达式树 308 11.5 linq提供程序 311 11.6 小结 311 第12章 动态语言扩展 313 12.1 dlr 313 12.2 dynamic类型 313 12.3 包含dlr scriptruntime 318 12.4 dynamicobject和 expandoobject 321 12.4.1 dynamicobject 321 12.4.2 expandoobject 323 12.5 小结 324 第13章 内存管理和指针 325 13.1 后台内存管理 325 13.1.1 值数据类型 325 13.1.2 引用数据类型 327 13.1.3 垃圾回收 328 13.2 释放非托管的资源 330 13.2.1 析构函数 330 13.2.2 idisposable接口 331 13.2.3 实现idisposable接口 和析构函数 332 13.3 不安全的代码 334 13.3.1 用指针直接访问内存 334 13.3.2 指针示例: pointerplayground 343 13.3.3 使用指针优化性能 347 13.4 小结 350 第14章 反射 351 14.1 自定义特性 351 14.1.1 编写自定义特性 352 14.1.2 自定义特性示例: whatsnewattributes 355 14.2 反射 358 14.2.1 system.type类 358 14.2.2 typeview示例 360 14.2.3 assembly类 362 14.2.4 完成whatsnew attributes示例 364 14.3 小结 368 第15章 错误和异常 369 15.1 异常类 369 15.2 捕获异常 371 15.2.1 实现多个catch块 373 15.2.2 在其他代码中捕获异常 376 15.2.3 system.exception属性 376 15.2.4 没有处理异常时所发生 的情况 377 15.2.5 嵌套的 try块 378 15.3 用户定义的异常类 379 15.3.1 捕获用户定义的异常 380 15.3.2 抛出用户定义的异常 382 15.3.3 定义用户定义的异常类 385 15.4 小结 387 第ⅱ部分 visual studio 第16章 visual studio 2010 391 16.1 使用visual studio 2010 391 16.1.1 创建项目 395 16.1.2 解决方案和项目的区别 401 16.1.3 windows应用程序代码 403 16.1.4 项目的浏览和编码 404 16.1.5 生成项目 411 16.1.6 调试代码 415 16.2 重构工具 418 16.3 面向多个版本的 .net framework 420 16.4 wpf、wcf、wf等 421 16.4.1 在visual studio 2010 中构建wpf应用程序 421 16.4.2 在visual studio 2010 中构建wf应用程序 423 16.5 小结 424 第17章 部署 425 17.1 部署的规划 425 17.1.1 部署选项 426 17.1.2 部署要求 426 17.1.3 部署.net运行库 427 17.2 简单的部署选项 427 17.2.1 xcopy部署 428 17.2.2 xcopy和web 应用程序 428 17.2.3 发布web站点 429 17.3 visual studio 2010安装 和部署项目 429 17.3.1 windows installer 430 17.3.2 创建安装程序 430 17.4 clickonce 437 17.4.1 clickonce操作 437 17.4.2 发布clickonce 应用程序 438 17.4.3 clickonce设置 438 17.4.4 clickonce文件的 应用程序缓存 439 17.4.5 应用程序的安全性 439 17.5 visual studio 2010 高级选项 440 17.5.1 文件系统编辑器 440 17.5.2 注册表编辑器 440 17.5.3 文件类型编辑器 440 17.5.4 用户界面编辑器 441 17.5.5 自定义动作编辑器 442 17.5.6 launch conditions 编辑器 443 17.6 小结 444 第ⅲ部分 基 础 第18章 程序集 447 18.1 程序集的含义 447 18.1.1 程序集的功能 448 18.1.2 程序集的结构 448 18.1.3 程序集清单 449 18.1.4 名称空间、程序集 和组件 449 18.1.5 私有程序集和共享 程序集 449 18.1.6 附属程序集 450 18.1.7 查看程序集 450 18.2 创建程序集 451 18.2.1 创建模块和程序集 451 18.2.2 程序集的特性 452 18.2.3 动态加载和创建 程序集 454 18.3 应用程序域 457 18.4 共享程序集 461 18.4.1 强名 462 18.4.2 使用强名获得完整性 462 18.4.3 全局程序集缓存 463 18.4.4 创建共享程序集 463 18.4.5 创建强名 464 18.4.6 安装共享程序集 465 18.4.7 使用共享程序集 465 18.4.8 程序集的延迟签名 466 18.4.9 引用 467 18.4.10 本机映像生成器 468 18.5 配置.net应用程序 469 18.5.1 配置类别 469 18.5.2 绑定程序集 470 18.6 版本问题 471 18.6.1 版本号 472 18.6.2 通过编程方式获取版本 472 18.6.3 绑定到程序集版本 473 18.6.4 发行者策略文件 474 18.6.5 运行库的版本 475 18.7 小结 476 第19章 检测 477 19.1 代码协定 477 19.1.1 前提条件 479 19.1.2 后置条件 480 19.1.3 常量 481 19.1.4 接口的协定 481 19.2 跟踪 483 19.2.1 跟踪源 484 19.2.2 跟踪开关 485 19.2.3 跟踪侦听器 486 19.2.4 筛选器 488 19.2.5 相关性 489 19.3 事件日志 492 19.3.1 事件日志体系结构 493 19.3.2 事件日志类 494 19.3.3 创建事件源 494 19.3.4 写入事件日志 495 19.3.5 资源文件 496 19.4 性能监控 500 19.4.1 性能监控类 500 19.4.2 性能计数器生成器 500 19.4.3 添加performance counter组件 503 19.4.4 perfmon.exe 505 19.5 小结 506 第20章 线程、任务和同步 507 20.1 概述 507 20.2 异步委托 508 20.2.1 投票 508 20.2.2 等待句柄 509 20.2.3 异步回调 510 20.3 thread类 512 20.3.1 给线程传递数据 513 20.3.2 后台线程 514 20.3.3 线程的优先级 515 20.3.4 控制线程 515 20.4 线程池 516 20.5 任务 517 20.5.1 启动任务 517 20.5.2 连续的任务 518 20.5.3 任务层次结构 519 20.5.4 任务的结果 520 20.6 parallel类 521 20.6.1 用parallel.for() 方法循环 521 20.6.2 使用parallel.foreach() 方法循环 523 20.6.3 通过parallel.invoke() 方法调用多个方法 524 20.7 取消架构 524 20.7.1 parallel.for()方法 的取消 524 20.7.2 任务的取消 526 20.8 线程问题 527 20.8.1 争用条件 527 20.8.2 死锁 530 20.9 同步 532 20.9.1 lock语句和线程安全 532 20.9.2 interlocked类 538 20.9.3 monitor类 539 20.9.4 spinlock结构 540 20.9.5 waithandle基类 540 20.9.6 mutex类 541 20.9.7 semaphore类 542 20.9.8 events类 544 20.9.9 barrier类 547 20.9.10 readerwriterlockslim 类 549 20.10 timer类 552 20.11 基于事件的异步模式 554 20.11.1 backgroundworker 类 554 20.11.2 启用取消功能 557 20.11.3 启用进度功能 558 20.11.4 创建基于事件的异步 组件 559 20.12 小结 563 第21章 安全性 565 21.1 身份验证和授权 565 21.1.1 标识和principal 565 21.1.2 角色 567 21.1.3 声明基于角色的安全性 567 21.1.4 客户端应用程序服务 568 21.2 加密 573 21.2.1 签名 575 21.2.2 交换密钥和安全传输 576 21.3 资源的访问控制 579 21.4 代码访问安全性 582 21.4.1 第2级安全透明性 582 21.4.2 权限 583 21.5 使用证书发布代码 588 21.6 小结 588 第22章 本地化 591 22.1 system.globalization 名称空间 591 22.1.1 unicode问题 592 22.1.2 区域性和区域 592 22.1.3 使用区域性 596 22.1.4 排序 600 22.2 资源 602 22.2.1 创建资源文件 602 22.2.2 资源文件生成器 602 22.2.3 resourcewriter 603 22.2.4 使用资源文件 604 22.2.5 system.resources 名称空间 607 22.3 使用visual studio的 windows窗体本地化 607 22.3.1 通过编程方式修改 区域性 612 22.3.2 使用自定义资源文件 613 22.3.3 资源的自动回退 614 22.3.4 外包翻译 615 22.4 用asp.net本地化 615 22.5 用wpf本地化 617 22.5.1 用于wpf的.net资源 618 22.5.2 xaml资源字典 619 22.6 自定义资源读取器 622 22.6.1 创建databaseresource reader类 623 22.6.2 创建databaseresource set类 625 22.6.3 创建databaseresource manager类 625 22.6.4 databaseresourcereader 的客户端应用程序 626 22.7 创建自定义区域性 626 22.8 小结 628 第23章 system.transactions 629 23.1 概述 629 23.1.1 事务处理阶段 630 23.1.2 acid属性 630 23.2 数据库和实体类 631 23.3 传统的事务 633 23.3.1 ado.net事务 633 23.3.2 system.enterprise services 634 23.4 system.transactions 635 23.4.1 可提交的事务 636 23.4.2 事务处理的升级 638 23.4.3 依赖事务 640 23.4.4 环境事务 642 23.5 隔离级别 649 23.6 自定义资源管理器 650 23.7 windows 7和windows server 2008的事务 656 23.8 小结 660 第24章 网络 661 24.1 webclient类 661 24.1.1 下载文件 662 24.1.2 基本的webclient示例 662 24.1.3 上传文件 663 24.2 webrequest类和 webresponse类 664 24.2.1 身份验证 666 24.2.2 使用代理 666 24.2.3 异步页面请求 666 24.3 把输出结果显示为 html页面 667 24.3.1 从应用程序中进行 简单的web浏览 667 24.3.2 启动internet explorer 实例 669 24.3.3 给应用程序提供更多 的ie类型特性 669 24.3.4 使用webbrowser控件 打印 674 24.3.5 显示请求页面的代码 674 24.3.6 webrequest类 和webresponse类的 层次结构 676 24.4 实用工具类 676 24.4.1 uri 676 24.4.2 ip地址和dns名称 677 24.5 较低层的协议 679 24.5.1 使用smtpclient 680 24.5.2 使用tcp类 682 24.5.3 tcpsend和tcpreceive 示例 682 24.5.4 tcp和udp 684 24.5.5 udp类 684 24.5.6 socket类 685 24.6 小结 689 第25章 windows服务 691 25.1 windows服务 691 25.2 windows服务的体系结构 692 25.2.1 服务程序 692 25.2.2 服务控制程序 694 25.2.3 服务配置程序 694 25.2.4 windows服务的类 694 25.3 创建windows服务程序 694 25.3.1 创建服务的核心功能 695 25.3.2 quoteclient示例 698 25.3.3 windows服务程序 699 25.3.4 线程和服务 703 25.3.5 服务的安装 704 25.3.6 安装程序 704 25.4 服务的监视和控制 708 25.4.1 mmc管理单元 708 25.4.2 net.exe实用程序 709 25.4.3 sc.exe实用程序 710 25.4.4 visual studio server explorer 710 25.4.5 编写自定义 servicecontroller类 710 25.5 故障排除和事件日志 718 25.6 小结 719 第26章 互操作性 721 26.1 .net和com 721 26.1.1 元数据 722 26.1.2 释放内存 722 26.1.3 接口 722 26.1.4 方法的绑定 724 26.1.5 数据类型 724 26.1.6 注册 724 26.1.7 线程 725 26.1.8 错误处理 726 26.1.9 事件 727 26.2 编组 727 26.3 从.net客户端中使用 com组件 728 26.3.1 创建com组件 728 26.3.2 创建rcw 734 26.3.3 使用rcw 735 26.3.4 使用com服务器和 动态语言扩展 736 26.3.5 线程问题 737 26.3.6 添加连接点 737 26.4 从com客户端中使用 .net组件 739 26.4.1 ccm 740 26.4.2 创建.net组件 740 26.4.3 创建类型库 741 26.4.4 com互操作特性 743 26.4.5 com注册 745 26.4.6 创建com客户端 应用程序 746 26.4.7 添加连接点 747 26.4.8 用sink对象创建 客户端 748 26.5 平台调用 750 26.6 小结 754 第27章 核心xaml 755 27.1 概述 755 27.1.1 元素映射到.net 对象上 756 27.1.2 使用自定义.net类 757 27.1.3 把特性用作属性 759 27.1.4 把特性用作元素 759 27.1.5 基本的.net类型 760 27.1.6 集合 760 27.1.7 构造函数 761 27.2 依赖属性 761 27.2.1 创建依赖类型 762 27.2.2 强制值回调 763 27.2.3 值变更回调和事件 764 27.2.4 事件的冒泡和隧道 764 27.3 附加属性 767 27.4 标记扩展 770 27.5 创建自定义标记扩展 770 27.6 xaml定义的标记扩展 772 27.7 读写xaml 772 27.8 小结 773 第28章 managed extensibility framework 775 28.1 mef的体系结构 775 28.2 协定 782 28.3 导出 783 28.3.1 导出属性和方法 787 28.3.2 导出元数据 789 28.4 导入 791 28.5 容器和出口提供程序 794 28.6 类别 797 28.7 小结 798 第29章 文件和注册表操作 799 29.1 管理文件系统 799 29.1.1 表示文件和文件夹 的.net类 800 29.1.2 path类 803 29.1.3 fileproperties示例 803 29.2 移动、复制和删除文件 808 29.2.1 filepropertiesandmovement 示例 808 29.2.2 filepropertiesandmovement 示例的代码 809 29.3 读写文件 812 29.3.1 读取文件 812 29.3.2 写入文件 814 29.3.3 流 815 29.3.4 缓存的流 816 29.3.5 使用filestream类读写 二进制文件 816 29.3.6 读写文本文件 821 29.4 映射内存的文件 827 29.5 读取驱动器信息 829 29.6 文件的安全性 831 29.6.1 从文件中读取acl 831 29.6.2 从目录中读取acl 832 29.6.3 添加和删除文件中 的acl项 833 29.7 读写注册表 835 29.7.1 注册表 835 29.7.2 .net注册表类 837 29.8 读写独立存储器 839 29.9 小结 844 第ⅳ部分 数 据 第30章 核心ado.net 847 30.1 ado.net概述 847 30.1.1 名称空间 848 30.1.2 共享类 848 30.1.3 数据库专用的类 849 30.2 使用数据库连接 850 30.2.1 管理连接字符串 851 30.2.2 高效地使用连接 852 30.2.3 事务 854 30.3 命令 855 30.3.1 执行命令 856 30.3.2 调用存储过程 860 30.4 快速数据访问: 数据读取器 862 30.5 管理数据和关系: dataset类 865 30.5.1 数据表 866 30.5.2 数据列 866 30.5.3 数据关系 871 30.5.4 数据约束 872 30.6 xml架构:用xsd 生成代码 875 30.7 填充dataset类 881 30.7.1 用数据适配器填充 dataset 882 30.7.2 从xml中填充 dataset类 883 30.8 持久化dataset类的修改 883 30.8.1 通过数据适配器进行 更新 883 30.8.2 写入xml输出结果 886 30.9 使用ado.net 887 30.9.1 分层开发 887 30.9.2 生成sql server的键 888 30.9.3 命名约定 891 30.10 小结 892 第31章 ado.net entity framework 893 31.1 ado.net entity framework概述 893 31.2 entity framework映射 894 31.2.1 逻辑层 895 31.2.2 概念层 897 31.2.3 映射层 898 31.3 entity client 899 31.3.1 连接字符串 900 31.3.2 entity sql 900 31.4 实体 901 31.5 对象上下文 904 31.6 关系 906 31.6.1 一个层次结构一个表 907 31.6.2 一种类型一个表 908 31.6.3 懒惰加载、延迟加载 和预先加载 909 31.7 对象查询 910 31.8 更新 913 31.8.1 对象跟踪 913 31.8.2 改变信息 914 31.8.3 附加和分离实体 916 31.8.4 存储实体的变化 916 31.9 linq to entities 917 31.10 小结 918 第32章 数据服务 919 32.1 概述 919 32.2 包含clr对象的自定义 宿主 920 32.2.1 clr对象 920 32.2.2 数据模型 922 32.2.3 数据服务 923 32.2.4 驻留服务 923 32.2.5 其他服务操作 924 32.3 http客户端应用程序 925 32.4 使用wcf数据服务和 ado.net entity framework 929 32.4.1 asp.net宿主和edm 929 32.4.2 使用system.data .service.client的.net 应用程序 931 32.5 小结 938 第33章 处理xml 939 33.1 .net支持的xml标准 940 33.2 system.xml名称空间 940 33.3 使用system.xml类 941 33.4 读写流格式的xml 942 33.4.1 使用 xmlreader类 942 33.4.2 使用xmlreader类进行 验证 946 33.4.3 使用xmlwriter类 947 33.5 在.net中使用dom 949 33.6 使用xpathnavigator类 954 33.6.1 system.xml.xpath 名称空间 954 33.6.2 system.xml.xsl 名称空间 959 33.6.3 调试xslt 963 33.7 xml和ado.net 965 33.7.1 将ado.net数据 转换为xml文档 965 33.7.2 把xml文档转换为 ado.net数据 970 33.8 在xml中序列化对象 972 33.9 linq to xml和.net 982 33.10 使用不同的xml对象 982 33.10.1 xdocument对象 982 33.10.2 xelement对象 983 33.10.3 xnamespace对象 984 33.10.4 xcomment对象 986 33.10.5 xattribute对象 986 33.11 使用linq查询xml 文档 987 33.11.1 查询静态的xml 文档 987 33.11.2 查询动态的xml 文档 989 33.12 xml文档的更多查询 技术 990 33.12.1 读取xml文档 990 33.12.2 写入xml文档 992 33.13 小结 993 第34章 .net编程和sql server 995 34.1 .net运行库的宿主 995 34.2 microsoft.sqlserver.server 997 34.3 用户定义的类型 998 34.3.1 创建udt 998 34.3.2 通过sql使用udt 1003 34.3.3 从客户端代码中使用 udt 1004 34.4 用户定义的聚合函数 1005 34.4.1 创建用户定义的 聚合函数 1006 34.4.2 使用用户定义的 聚合函数 1007 34.5 存储过程 1007 34.5.1 创建存储过程 1008 34.5.2 使用存储过程 1009 34.6 用户定义的函数 1010 34.6.1 创建用户定义的函数 1010 34.6.2 使用用户定义的函数 1010 34.7 触发器 1011 34.7.1 创建触发器 1011 34.7.2 使用触发器 1012 34.8 xml数据类型 1013 34.8.1 包含xml数据的表 1013 34.8.2 读取xml值 1014 34.8.3 数据的查询 1017 34.8.4 xml数据修改语言 (xml dml) 1019 34.8.5 xml索引 1020 34.8.6 强类型化的xml 1021 34.9 小结 1022 第ⅴ部分 显 示 第35章 核心wpf 1025 35.1 概述 1025 35.1.1 名称空间 1025 35.1.2 类层次结构 1027 35.2 形状 1028 35.3 几何图形 1030 35.4 变换 1032 35.5 画笔 1033 35.5.1 solidcolorbrush 1033 35.5.2 lineargradientbrush 1034 35.5.3 radialgradientbrush 1034 35.5.4 drawingbrush 1035 35.5.5 imagebrush 1035 35.5.6 visualbrush 1036 35.6 控件 1037 35.6.1 简单控件 1037 35.6.2 内容控件 1038 35.6.3 带标题的内容控件 1039 35.6.4 项控件 1040 35.6.5 带标题的项控件 1041 35.6.6 修饰 1041 35.7 布局 1042 35.7.1 stackpanel 1042 35.7.2 wrappanel 1043 35.7.3 canvas 1044 35.7.4 dockpanel 1044 35.7.5 grid 1045 35.8 样式和资源 1046 35.8.1 样式 1046 35.8.2 资源 1048 35.8.3 系统资源 1049 35.8.4 从代码中访问资源 1050 35.8.5 动态资源 1050 35.8.6 资源字典 1051 35.9 触发器 1052 35.9.1 属性触发器 1053 35.9.2 多触发器 1054 35.9.3 数据触发器 1055 35.10 模板 1056 35.10.1 控件模板 1057 35.10.2 数据模板 1060 35.10.3 样式化列表框 1061 35.10.4 itemtemplate 1062 35.10.5 列表框元素的控件 模板 1064 35.11 动画 1066 35.11.1 时间轴 1066 35.11.2 非线性动画 1069 35.11.3 事件触发器 1069 35.11.4 关键帧动画 1072 35.12 可见状态管理器 1073 35.13 3-d 1076 35.13.1 模型 1077 35.13.2 照相机 1079 35.13.3 光线 1079 35.13.4 旋转 1079 35.14 小结 1080 第36章 用wpf编写业务 应用程序 1083 36.1 数据绑定 1083 36.1.1 booksdemo应用程序 1084 36.1.2 用xaml绑定 1086 36.1.3 简单对象的绑定 1088 36.1.4 更改通知 1090 36.1.5 对象数据提供程序 1092 36.1.6 列表绑定 1094 36.1.7 主从绑定 1096 36.1.8 多绑定 1097 36.1.9 优先绑定 1099 36.1.10 值的转换 1100 36.1.11 动态添加列表项 1102 36.1.12 数据模板选择器 1103 36.1.13 绑定到xml上 1105 36.1.14 绑定的验证 1107 36.2 commanding 1111 36.2.1 定义命令 1112 36.2.2 定义命令源 1113 36.2.3 命令绑定 1113 36.3 treeview 1114 36.4 datagrid 1118 36.4.1 自定义列 1120 36.4.2 行的细节 1121 36.4.3 用datagrid进行分组 1121 36.5 小结 1124 第37章 用wpf创建文档 1125 37.1 文本元素 1125 37.1.1 字体 1125 37.1.2 texteffect 1127 37.1.3 内联 1128 37.1.4 块 1130 37.1.5 列表 1132 37.1.6 表 1132 37.1.7 块的锚定 1134 37.2 流文档 1135 37.3 固定文档 1136 37.4 xps文档 1140 37.5 打印 1141 37.5.1 用printdialog打印 1142 37.5.2 打印可见元素 1142 37.6 小结 1144 第38章 silverlight 1145 38.1 wpf和silverlight的比较 1145 38.2 创建silverlight项目 1146 38.3 导航 1148 38.4 网络 1152 38.4.1 创建ado.net entity data model 1153 38.4.2 为silverlight客户端 创建wcf服务 1153 38.4.3 调用wcf服务 1155 38.4.4 使用wcf数据服务 1158 38.4.5 使用system.net访问 服务 1160 38.5 浏览器集成 1162 38.5.1 调用javascript 1162 38.5.2 javascript调用 silverlight 1163 38.6 在浏览器外运行的 silverlight应用程序 1164 38.7 小结 1167 第39章 windows窗体 1169 39.1 创建windows窗体 应用程序 1169 39.2 control类 1175 39.2.1 大小和位置 1175 39.2.2 外观 1176 39.2.3 用户交互操作 1176 39.2.4 windows功能 1177 39.2.5 其他功能 1177 39.3 标准控件和组件 1178 39.3.1 button控件 1178 39.3.2 checkbox控件 1178 39.3.3 radiobutton控件 1179 39.3.4 combobox控件、 listbox控件和 checkedlistbox控件 1179 39.3.5 datagridview控件 1180 39.3.6 datetimepicker控件 1188 39.3.7 errorprovider组件 1188 39.3.8 imagelist组件 1189 39.3.9 label控件 1189 39.3.10 listview控件 1189 39.3.11 picturebox控件 1189 39.3.12 progressbar控件 1190 39.3.13 textbox控件、 richtextbox控件与 maskedtextbox控件 1190 39.3.14 panel控件 1191 39.3.15 flowlayoutpanel和 tablelayoutpanel 控件 1191 39.3.16 splitcontainer控件 1192 39.3.17 tabcontrol控件和 tabpages控件 1192 39.3.18 toolstrip控件 1193 39.3.19 menustrip控件 1194 39.3.20 contextmenustrip 控件 1194 39.3.21 toolstripmenuitem 控件 1194 39.3.22 toolstripmanager类 1194 39.3.23 toolstripcontainer 控件 1195 39.4 窗体 1195 39.4.1 form类 1195 39.4.2 多文档界面 1199 39.4.3 创建自己的用户控件 1200 39.5 小结 1200 第40章 核心asp.net 1201 40.1 asp.net概述 1201 40.1.1 asp.net文件的 处理方式 1202 40.1.2 web站点和web 应用程序 1202 40.1.3 asp.net中的状态 管理 1203 40.2 asp.net web窗体 1203 40.2.1 asp.net代码模型 1207 40.2.2 asp.net服务器控件 1208 40.3 ado.net和数据绑定 1222 40.3.1 更新事件登记 应用程序 1222 40.3.2 数据绑定的更多内容 1229 40.4 应用程序配置 1234 40.5 小结 1236 第41章 asp.net的功能 1237 41.1 用户控件和自定义控件 1238 41.1.1 用户控件 1238 41.1.2 pcsdemosite中的 用户控件 1242 41.1.3 自定义控件 1243 41.2 母版页 1247 41.2.1 在web页面中 访问母版页 1248 41.2.2 嵌套的母版页 1248 41.2.3 pcsdemosite中 的母版页 1249 41.3 站点导航 1250 41.3.1 添加站点地图文件 1251 41.3.2 pcsdemosite中 的导航 1252 41.4 安全性 1253 41.4.1 使用security setup 添加forms身份验证 功能 1254 41.4.2 实现登录系统 1255 41.4.3 web 登录服务器控件 1255 41.4.4 保护目录 1256 41.4.5 pcsdemosite中的 安全性 1257 41.5 主题 1259 41.5.1 把主题应用于页面 1259 41.5.2 定义主题 1260 41.5.3 pcsdemosite中的 主题 1260 41.6 web部件 1263 41.6.1 web部件应用程序 组件 1263 41.6.2 web部件示例 1264 41.7 asp.net ajax 1270 41.8 ajax的概念 1271 41.9 asp.net ajax 1273 41.9.1 核心功能 1273 41.9.2 asp.net ajax control toolkit 1275 41.10 asp.net ajax网站 示例 1276 41.11 支持asp.net ajax的 网站配置 1278 41.12 添加asp.net ajax 功能 1279 41.12.1 scriptmanager控件 1280 41.12.2 使用updatepanel 控件 1281 41.12.3 使用updateprogress 1283 41.12.4 使用扩展控件 1284 41.13 使用ajax库 1286 41.13.1 给web页面添加 javascript 1286 41.13.2 全局实用程序函数 1287 41.13.3 使用ajax库 javascript oop 扩展 1287 41.13.4 pagerequestmanager 对象和application 对象 1289 41.13.5 javascript的调试 1292 41.13.6 异步调用web方法 1293 41.13.7 asp.net应用程序 服务 1294 41.14 小结 1294 第42章 asp.net动态数据 和mvc 1297 42.1 路由 1298 42.1.1 查询字符串参数 1298 42.1.2 定义路由 1300 42.1.3 使用路由参数 1303 42.2 动态数据 1305 42.2.1 创建动态数据网站 1305 42.2.2 定制动态数据网站 1310 42.2.3 进一步开发 1314 42.3 mvc 1314 42.3.1 mvc的含义 1314 42.3.2 asp.net mvc的 含义 1315 42.3.3 简单的asp.net mvc 应用程序 1315 42.3.4 定制asp.net mvc 应用程序 1321 42.3.5 进一步开发 1329 42.4 小结 1330 第ⅵ部分 通 信 第43章 wcf 1333 43.1 wcf概述 1333 43.1.1 soap 1335 43.1.2 wsdl 1335 43.1.3 rest 1335 43.1.4 json 1336 43.2 简单的服务和客户端 1336 43.2.1 服务协定 1337 43.2.2 服务的实现 1338 43.2.3 wcf服务宿主和 wcf测试客户端 1338 43.2.4 自定义服务宿主 1340 43.2.5 wcf客户端 1342 43.2.6 诊断 1343 43.3 协定 1345 43.3.1 数据协定 1345 43.3.2 版本问题 1346 43.3.3 服务协定 1346 43.3.4 消息协定 1347 43.4 服务的实现 1348 43.4.1 以编程方式创建 客户端 1351 43.4.2 错误处理 1352 43.5 绑定 1353 43.6 宿主 1356 43.6.1 自定义宿主 1356 43.6.2 was宿主 1357 43.6.3 预配置的宿主类 1357 43.7 客户端 1358 43.8 双工通信 1360 43.9 小结 1362 第44章 windows wf 4 1363 44.1 hello world示例 1363 44.2 活动 1365 44.2.1 if活动 1366 44.2.2 invokemethod活动 1367 44.2.3 parallel活动 1367 44.2.4 delay活动 1368 44.2.5 pick活动 1368 44.3 自定义活动 1369 44.3.1 活动的验证 1370 44.3.2 设计器 1371 44.3.3 自定义复合活动 1373 44.4 工作流 1375 44.4.1 实参和变量 1376 44.4.2 workflowapplication 1377 44.4.3 workflowservicehost 1381 44.4.4 驻留设计器 1386 44.5 小结 1391 第45章 对等网络 1393 45.1 p2p网络概述 1393 45.1.1 客户端-服务器体系 结构 1393 45.1.2 p2p体系结构 1394 45.1.3 p2p体系结构的挑战 1395 45.1.4 p2p术语 1396 45.1.5 p2p解决方案 1396 45.2 microsoft windows peer-to-peer networking 1396 45.2.1 pnrp 1396 45.2.2 people near me 1399 45.3 构建p2p应用程序 1400 45.3.1 system.net.peertopeer 1400 45.3.2 system.net.peertopeer .collaboration 1405 45.4 小结 1408 第46章 消息队列 1409 46.1 概述 1409 46.1.1 使用消息队列的场合 1410 46.1.2 消息队列功能 1411 46.2 message queuing产品 1412 46.3 消息队列体系结构 1412 46.3.1 消息 1413 46.3.2 消息队列 1413 46.4 message queuing 管理工具 1414 46.4.1 创建消息队列 1414 46.4.2 消息队列属性 1415 46.5 消息队列的编程实现 1415 46.5.1 创建消息队列 1415 46.5.2 查找队列 1416 46.5.3 打开已知队列 1417 46.5.4 发送消息 1418 46.5.5 接收消息 1421 46.6 课程订单应用程序 1423 46.6.1 课程订单类库 1423 46.6.2 课程订单消息 发送程序 1424 46.6.3 发送优先级和可恢复 的消息 1425 46.6.4 课程订单消息接收 程序 1426 46.7 接收结果 1429 46.7.1 确认队列 1430 46.7.2 响应队列 1430 46.8 事务队列 1431 46.9 消息队列和wcf 1432 46.9.1 带数据协定的实体类 1432 46.9.2 wcf服务协定 1433 46.9.3 wcf消息接收 应用程序 1434 46.9.4 wcf消息发送 应用程序 1437 46.10 消息队列的安装 1438 46.11 小结 1438 第47章 syndication 1441 47.1 system.servicemodel. syndication名称空间 概述 1441 47.2 读取联合源的示例 1442 47.3 联合源的示例 1444 47.4 小结 1449 第ⅶ部分 附 录 附录a 1453 ***以下内容见随书附赠光盘*** 第48章 使用gdi+绘图 e1 48.1 理解绘图规则 e1 48.1.1 gdi和gdi+ e2 48.1.2 绘制图形 e3 48.1.3 使用onpaint()方法 绘制图形 e6 48.1.4 使用剪切区域 e7 48.2 测量坐标和区域 e9 48.2.1 point和pointf结构 e9 48.2.2 size和sizef结构 e10 48.2.3 rectangle和rectanglef 结构 e11 48.2.4 region e12 48.3 调试须知 e13 48.4 绘制可滚动的窗口 e14 48.5 世界、页面和设备坐标 e18 48.6 颜色 e19 48.6.1 rgb值 e19 48.6.2 命名颜色 e20 48.6.3 图形显示模式和安全 的调色板 e20 48.6.4 安全调色板 e21 48.7 画笔和钢笔 e21 48.7.1 画笔 e22 48.7.2 钢笔 e23 48.8 绘制图形和线条 e23 48.9 显示图像 e25 48.10 处理图像时的问题 e27 48.11 绘制文本 e28 48.12 简单的文本示例 e29 48.13 字体和字体系列 e30 48.14 示例:枚举字体系列 e31 48.15 编辑文本文档: capseditor示例 e33 48.15.1 invalidate()方法 e37 48.15.2 计算项的大小和文档 的大小 e38 48.15.3 onpaint()方法 e39 48.15.4 坐标转换 e41 48.15.5 响应用户的输入 e42 48.16 打印 e45 48.17 小结 e50 第49章 vsto e51 49.1 vsto概述 e51 49.1.1 项目类型 e52 49.1.2 项目功能 e54 49.2 vsto项目基础 e55 49.2.1 office对象模型 e55 49.2.2 vsto名称空间 e55 49.2.3 宿主项和宿主控件 e56 49.2.4 基本的vsto项目 结构 e57 49.2.5 globals类 e60 49.2.6 事件处理 e60 49.3 构建vsto解决方案 e61 49.3.1 管理应用程序级插件 e62 49.3.2 与应用程序和文档 交互操作 e63 49.3.3 ui的自定义 e64 49.4 示例应用程序 e68 49.5 小结 e78 第50章 maf e79 50.1 maf体系结构 e79 50.1.1 管道 e80 50.1.2 发现 e81 50.1.3 激活和隔离 e82 50.1.4 协定 e83 50.1.5 生命周期 e84 50.1.6 版本问题 e85 50.2 插件示例 e86 50.2.1 插件协定 e86 50.2.2 计算器插件视图 e87 50.2.3 计算器插件适配器 e88 50.2.4 计算器插件 e90 50.2.5 计算器宿主视图 e91 50.2.6 计算机宿主适配器 e91 50.2.7 计算器宿主 e93 50.2.8 其他插件 e97 50.3 小结 e97 第51章 enterprise services e99 51.1 使用enterprise services e99 51.1.1 简史 e100 51.1.2 使用enterprise services 的场合 e100 51.1.3 重要功能 e101 51.2 创建简单的com+应用 程序 e103 51.2.1 servicedcomponent类 e103 51.2.2 程序集的属性 e103 51.2.3 创建组件 e104 51.3 部署 e106 51.3.1 自动部署 e106 51.3.2 手工部署 e106 51.3.3 创建安装软件包 e106 51.4 组件服务管理器 e107 51.5 客户端应用程序 e108 51.6 事务 e109 51.6.1 事务的特性 e109 51.6.2 事务的结果 e110 51.7 示例应用程序 e111 51.7.1 实体类 e111 51.7.2 ordercontrol组件 e113 51.7.3 orderdata组件 e114 51.7.4 orderlinedata组件 e116 51.7.5 客户端应用程序 e117 51.8 集成wcf和enterprise services e118 51.8.1 wcf服务外观 e118 51.8.2 客户端应用程序 e122 51.9 小结 e123 第52章 目录服务 e125 52.1 active directory的 体系结构 e126 52.1.1 active directory的 功能 e126 52.1.2 active directory的 概念 e126 52.1.3 active directory数据 的特征 e129 52.1.4 指定架构 e130 52.2 active directory的 管理工具 e131 52.2.1 active directory users and computers工具 e131 52.2.2 adsi edit工具 e132 52.3 active directory编程 e133 52.3.1 system.directoryservices 名称空间中的类 e134 52.3.2 绑定到directory services e134 52.3.3 获取目录项 e138 52.3.4 对象集合 e140 52.3.5 缓存 e141 52.3.6 创建新对象 e141 52.3.7 更新目录项 e142 52.3.8 访问本地adsi对象 e143 52.3.9 在active directory 中搜索 e144 52.4 搜索用户对象 e148 52.4.1 用户界面 e148 52.4.2 获取架构命名上下文 e149 52.4.3 获取user类的属性名 e149 52.4.4 搜索用户对象 e150 52.5 账户管理 e152 52.5.1 显示用户信息 e152 52.5.2 创建用户 e153 52.5.3 重置密码 e153 52.5.4 创建组 e154 52.5.5 在组中添加用户 e154 52.5.6 查找用户 e154 52.6 dsml e155 52.6.1 system.directoryservices. protocols名称空间中 的类 e156 52.6.2 用dsml搜索 active directory对象 e156 52.7 小结 e157 第53章 c#、visual basic、 c++/cli和f# e159 53.1 名称空间 e160 53.2 定义类型 e161 53.2.1 引用类型 e161 53.2.2 值类型 e162 53.2.3 类型推断 e163 53.2.4 接口 e164 53.2.5 枚举 e165 53.3 方法 e166 53.3.1 方法的参数和返回 类型 e166 53.3.2 参数修饰符 e167 53.3.3 构造函数 e168 53.3.4 属性 e170 53.3.5 对象初始值设定项 e171 53.3.6 扩展方法 e171 53.4 静态成员 e172 53.5 数组 e173 53.6 控制语句 e174 53.6.1 if语句 e174 53.6.2 条件操作符 e174 53.6.3 switch语句 e175 53.7 循环 e176 53.7.1 for语句 e176 53.7.2 while和do…while 语句 e177 53.7.3 foreach语句 e178 53.8 异常处理 e178 53.9 继承 e180 53.9.1 访问修饰符 e180 53.9.2 关键字 e181 53.10 资源管理 e183 53.10.1 idisposable接口的 实现 e183 53.10.2 using语句 e184 53.10.3 重写finalize()方法 e184 53.11 委托 e186 53.12 事件 e188 53.13 泛型 e190 53.14 linq查询 e192 53.15 c++/cli混合本地代码 和托管代码 e192 53.16 c#的特殊功能 e193 53.17 小结 e194 第54章 .net remoting e195 54.1 使用.net remoting的 原因 e195 54.2 .net remoting术语详解 e197 54.2.1 客户端通信 e198 54.2.2 服务器端通信 e199 54.3 上下文 e199 54.3.1 激活 e200 54.3.2 特性和属性 e200 54.3.3 上下文之间的通信 e201 54.4 远程对象、客户端和 服务器 e201 54.4.1 远程对象 e201 54.4.2 简单的服务器应用 程序 e202 54.4.3 简单的客户端应用 程序 e203 54.5 .net remoting体系结构 e204 54.5.1 信道 e204 54.5.2 格式化程序 e207 54.5.3 channelservices和 remotingconfiguration e207 54.5.4 对象的激活 e209 54.5.5 消息接收器 e212 54.5.6 在远程方法中传递对象 e213 54.5.7 生命周期管理 e216 54.6 配置文件 e218 54.6.1 知名对象的服务器 配置 e220 54.6.2 知名对象的客户端 配置 e220 54.6.3 客户端激活的对象的 服务器配置 e221 54.6.4 客户端激活的对象的 客户端配置 e222 54.6.5 使用配置文件的 服务器代码 e222 54.6.6 使用配置文件的 客户端代码 e223 54.6.7 客户端信道的延迟 加载 e223 54.6.8 调试配置 e224 54.6.9 配置文件中的生命 周期服务 e224 54.6.10 格式化程序提供程序 e225 54.7 在asp.net中驻留远程 服务器 e225 54.8 类、接口和soapsuds e227 54.8.1 接口 e227 54.8.2 soapsuds e227 54.9 异步远程调用 e228 54.9.1 使用委托和 .net remoting e228 54.9.2 oneway特性 e229 54.10 .net remoting的 安全性 e229 54.11 远程处理和事件 e230 54.11.1 远程对象 e231 54.11.2 事件参数 e232 54.11.3 服务器 e233 54.11.4 服务器配置文件 e233 54.11.5 事件接收器 e234 54.11.6 客户端 e234 54.11.7 客户端配置文件 e235 54.11.8 运行程序 e236 54.12 调用上下文 e236 54.13 小结 e237 第55章 web服务和asp.net e239 55.1 soap e240 55.2 wsdl e241 55.3 web服务 e242 55.3.1 提供web服务 e242 55.3.2 使用web服务 e246 55.4 扩充事件登记示例 e248 55.4.1 事件登记 web服务 e249 55.4.2 事件登记客户端 e253 55.5 使用soap标题交换 数据 e256 55.6 小结 e261 第56章 linq to sql e263 56.1 linq to sql和 visual studio 2010 e264 56.1.1 调用products表 e265 56.1.2 添加linq to sql类 e265 56.1.3 o/r设计器概述 e266 56.1.4 创建product对象 e267 56.2 对象如何映射到linq 对象上 e269 56.2.1 datacontext对象 e270 56.2.2 table[tentity]对象 e274 56.3 脱离o/r设计器工作 e274 56.3.1 创建自己的自定义 对象 e274 56.3.2 通过自定义对象和 linq查询 e275 56.3.3 通过查询限制所调用 的列 e276 56.3.4 使用列名 e277 56.3.5 创建自己的 datacontext对象 e278 56.4 自定义对象和o/r 设计器 e279 56.5 查询数据库 e280 56.5.1 使用查询表达式 e280 56.5.2 查询表达式 e281 56.5.3 使用表达式筛选 e282 56.5.4 执行连接 e282 56.5.5 分组项 e284 56.6 存储过程 e285 56.7 小结 e286 第57章 wpf 3.0 e287 57.1 hello world示例 e287 57.2 活动 e288 57.2.1 ifelseactivity e289 57.2.2 parallelactivity e290 57.2.3 callexternalmethod activity e291 57.2.4 delayactivity e291 57.2.5 listenactivity e292 57.2.6 活动执行模型 e293 57.3 自定义活动 e293 57.3.1 活动的验证 e295 57.3.2 主题和设计器 e296 57.3.3 activitytoolboxitem 和图标 e297 57.3.4 自定义复合活动 e299 57.4 工作流 e305 57.4.1 顺序工作流 e305 57.4.2 状态机工作流 e305 57.4.3 给工作流传递参数 e307 57.4.4 从工作流中返回结果 e308 57.4.5 将参数绑定到活动上 e309 57.5 工作流运行库 e310 57.6 工作流服务 e310 57.6.1 持久性服务 e312 57.6.2 跟踪服务 e313 57.6.3 自定义服务 e315 57.7 与wcf集成 e316 57.8 驻留工作流 e318 57.9 工作流设计器 e319 57.10 从wf 3.x迁移到wf 4 e320 57.10.1 把活动代码提取到 服务中 e320 57.10.2 删除代码活动 e320 57.10.3 同时运行wf 3.x 和4 e321 57.10.4 考虑把状态机迁移到 流程图上 e321 57.11 小结 e321 ................ ..................
10.0MB
《C#高级编程第七版》中文(ProfessionalC#4.0and.NET4)[共十卷][VOL3]
2011-05-26该版本已添加目录标签 并修正了一些错误 中文名: C#高级编程 第七版 原名: Professional C# 4.0 and .NET 4 别名: C#高级编程(第7版) 作者: (美)Christian Nagel Bill Evjen Jay Glynn.译者: 无.资源格式: PDF 版本: 影印版 出版社: worx.书号: ISBN:9787302239376.发行时间: 2010年 地区: 大陆 语言: 中文 本书是Wrox畅销书,C#经典名著!2009年度全行业优秀畅销书。自第一版出版以来,都是国内读者的普遍好评,累计销量近十万册。 《C#高级编程(第7版)》的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写 Windows应用程序和ASP.NET Web应用程序。 本书几乎涵盖C#语言的所有功能,对于C#初学者和有经验的程序员是值得大力推荐的书籍。实践证明,本书是关于C# 和 Visual Studio的一本全面 而且权威的参考书。 新的C# 4对于在Visual Studio 2010中编写代码是必不可少的。这本实用指南强调,C#是编写.NET 4应用程序的首选语言。《C#高级编程(第7版)》 的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写Windows应用程序和ASP.NET Web应用程序。 本书主要内容 ◆ 回顾.NET体系结构、对象、泛型、继承、数组、运算符、类型强制转换、委托、事件、Lambda表达式等 ◆ 详细论述C#中的动态对象、命名参数和可选参数、COM专用的交互操作功能、安全类型变体 ◆ 阐述.NET 4的新增功能、WF 4、ADO.NET 数据服务、MEF、并行任务库和PLINQ ◆ 深入探讨LINQ、WCF、WPF、流文档和固定文档及Silverlight等功能强大的技术 ◆ 回顾ASP.NET编程,介绍ASP.NET MVC和ASP.NET 动态数据等新功能 ◆ 讨论使用WCF、MSMQ、点对点和联合进行通信 目录: 第ⅰ部分 c# 语 言 第1章 .net体系结构 3 1.1 c#与.net的关系 3 1.2 公共语言运行库 4 1.2.1 平台无关性 4 1.2.2 提高性能 4 1.2.3 语言的互操作性 5 1.3 中间语言 6 1.3.1 面向对象和接口的支持 6 1.3.2 不同的值类型和引用类型 7 1.3.3 强数据类型化 8 1.3.4 通过异常处理错误 12 1.3.5 特性的使用 13 1.4 程序集 13 1.4.1 私有程序集 14 1.4.2 共享程序集 14 1.4.3 反射 14 1.4.4 并行编程 15 1.5 .net framework类 15 1.6 名称空间 16 .1.7 用c#创建.net应用程序 16 1.7.1 创建asp.net应用程序 16 1.7.2 创建windows窗体 18 1.7.3 使用wpf 18 1.7.4 windows控件 19 1.7.5 windows服务 19 1.7.6 wcf 19 1.7.7 windows wf 19 1.8 c#在.net企业体系结构 中的作用 19 1.9 小结 21 第2章 核心c# 23 2.1 第一个c#程序 23 2.1.1 代码 24 2.1.2 编译并运行程序 24 2.1.3 详细介绍 25 2.2 变量 26 2.2.1 变量的初始化 27 2.2.2 类型推断 28 2.2.3 变量的作用域 29 2.2.4 常量 31 2.3 预定义数据类型 32 2.3.1 值类型和引用类型 32 2.3.2 cts类型 33 2.3.3 预定义的值类型 33 2.3.4 预定义的引用类型 36 2.4 流控制 38 2.4.1 条件语句 38 2.4.2 循环 42 2.4.3 跳转语句 45 2.5 枚举 46 2.6 名称空间 47 2.6.1 using语句 49 2.6.2 名称空间的别名 49 2.7 main()方法 50 2.7.1 多个main()方法 50 2.7.2 给main()方法传递参数 52 2.8 有关编译c#文件的更多内容 52 2.9 控制台i/o 54 2.10 使用注释 56 2.10.1 源文件中的内部注释 56 2.10.2 xml文档 56 2.11 c#预处理器指令 58 2.11.1 #define和 #undef 59 2.11.2 #if, #elif, #else和#endif 59 2.11.3 #warning和 # error 60 2.11.4 #region和#endregion 61 2.11.5 #line 61 2.11.6 #pragma 61 2.12 c#编程规则 62 2.12.1 关于标识符的规则 62 2.12.2 用法约定 63 2.13 小结 68 第3章 对象和类型 69 3.1 类和结构 69 3.2 类 70 3.2.1 数据成员 70 3.2.2 函数成员 71 3.2.3 只读字段 83 3.3 匿名类型 84 3.4 结构 85 3.4.1 结构是值类型 86 3.4.2 结构和继承 87 3.4.3 结构的构造函数 87 3.5 部分类 87 3.6 静态类 89 3.7 object类 89 3.7.1 system.object()方法 90 3.7.2 tostring()方法 90 3.8 扩展方法 92 3.9 小结 93 第4章 继承 95 4.1 继承的类型 95 4.1.1 实现继承和接口继承 95 4.1.2 多重继承 95 4.1.3 结构和类 96 4.2 实现继承 96 4.2.1 虚方法 97 4.2.2 隐藏方法 98 4.2.3 调用函数的基类版本 99 4.2.4 抽象类和抽象函数 100 4.2.5 密封类和密封方法 100 4.2.6 派生类的构造函数 101 4.3 修饰符 106 4.3.1 可见性修饰符 106 4.3.2 其他修饰符 106 4.4 接口 107 4.4.1 定义和实现接口 108 4.4.2 派生的接口 111 4.5 小结 113 第5章 泛型 115 5.1 概述 115 5.1.1 性能 116 5.1.2 类型安全 117 5.1.3 二进制代码的重用 117 5.1.4 代码的扩展 117 5.1.5 命名约定 118 5.2 创建泛型类 118 5.3 泛型类的功能 122 5.3.1 默认值 123 5.3.2 约束 123 5.3.3 继承 126 5.3.4 静态成员 127 5.4 泛型接口 127 5.4.1 协变和抗变 128 5.4.2 泛型接口的协变 129 5.4.3 泛型接口的抗变 130 5.5 泛型结构 131 5.6 泛型方法 134 5.6.1 泛型方法示例 134 5.6.2 带约束的泛型方法 135 5.6.3 带委托的泛型方法 136 5.6.4 泛型方法规范 137 5.7 小结 138 第6章 数组 139 6.1 简单数组 139 6.1.1 数组的声明 139 6.1.2 数组的初始化 139 6.1.3 访问数组元素 140 6.1.4 使用引用类型 141 6.2 多维数组 142 6.3 锯齿数组 143 6.4 array类 144 6.4.1 创建数组 145 6.4.2 复制数组 146 6.4.3 排序 147 6.5 数组作为参数 150 6.5.1 数组协变 151 6.5.2 arraysegment[t] 151 6.6 枚举 152 6.6.1 ienumerator接口 152 6.6.2 foreach语句 153 6.6.3 yield语句 153 6.7 元组 158 6.8 结构比较 159 6.9 小结 162 第7章 运算符和类型强制转换 163 7.1 运算符 163 7.1.1 运算符的简化操作 165 7.1.2 运算符的优先级 169 7.2 类型的安全性 169 7.2.1 类型转换 170 7.2.2 装箱和拆箱 173 7.3 比较对象的相等性 174 7.3.1 比较引用类型的相等性 174 7.3.2 比较值类型的相等性 175 7.4 运算符重载 176 7.4.1 运算符的工作方式 177 7.4.2 运算符重载的示例: vector结构 178 7.5 用户定义的类型强制转换 185 7.5.1 实现用户定义的类型 强制转换 186 7.5.2 多重类型强制转换 192 7.6 小结 195 第8章 委托、lambda表达式 和事件 197 8.1 委托 197 8.1.1 声明委托 198 8.1.2 使用委托 199 8.1.3 简单的委托示例 202 8.1.4 action[t]和func[t] 委托 204 8.1.5 bubblesorter示例 204 8.1.6 多播委托 207 8.1.7 匿名方法 210 8.2 lambda表达式 211 8.2.1 参数 212 8.2.2 多行代码 212 8.2.3 lambda表达式外部的 变量 213 8.3 事件 214 8.3.1 事件发布程序 214 8.3.2 事件侦听器 216 8.3.3 弱事件 217 8.4 小结 220 第9章 字符串和正则表达式 221 9.1 system.string类 221 9.1.1 创建字符串 222 9.1.2 stringbuilder成员 225 9.1.3 格式字符串 226 9.2 正则表达式 231 9.2.1 正则表达式概述 232 9.2.2 regularexpressions playaround示例 233 9.2.3 显示结果 235 9.2.4 匹配、组合和捕获 237 9.3 小结 238 第10章 集合 239 10.1 集合接口和类型 239 10.2 列表 240 10.2.1 创建列表 241 10.2.2 只读集合 250 10.3 队列 250 10.4 栈 254 10.5 链表 256 10.6 有序列表 261 10.7 字典 262 10.7.1 键的类型 263 10.7.2 字典示例 264 10.7.3 lookup类 268 10.7.4 有序字典 269 10.8 集 269 10.9 可观察的集合 271 10.10 位数组 272 10.10.1 bitarray类 273 10.10.2 bitvector32结构 275 10.11 并发集合 277 10.12 性能 279 10.13 小结 281 第11章 linq 283 11.1 linq概述 283 11.1.1 列表和实体 283 11.1.2 linq查询 287 11.1.3 扩展方法 288 11.1.4 推迟查询的执行 289 11.2 标准的查询操作符 291 11.2.1 筛选 293 11.2.2 用索引筛选 293 11.2.3 类型筛选 294 11.2.4 复合的from子句 294 11.2.5 排序 295 11.2.6 分组 296 11.2.7 对嵌套的对象分组 297 11.2.8 连接 298 11.2.9 集合操作 300 11.2.10 合并 301 11.2.11 分区 302 11.2.12 聚合操作符 303 11.2.13 转换 304 11.2.14 生成操作符 305 11.3 并行linq 306 11.3.1 并行查询 306 11.3.2 分区器 307 11.3.3 取消 307 11.4 表达式树 308 11.5 linq提供程序 311 11.6 小结 311 第12章 动态语言扩展 313 12.1 dlr 313 12.2 dynamic类型 313 12.3 包含dlr scriptruntime 318 12.4 dynamicobject和 expandoobject 321 12.4.1 dynamicobject 321 12.4.2 expandoobject 323 12.5 小结 324 第13章 内存管理和指针 325 13.1 后台内存管理 325 13.1.1 值数据类型 325 13.1.2 引用数据类型 327 13.1.3 垃圾回收 328 13.2 释放非托管的资源 330 13.2.1 析构函数 330 13.2.2 idisposable接口 331 13.2.3 实现idisposable接口 和析构函数 332 13.3 不安全的代码 334 13.3.1 用指针直接访问内存 334 13.3.2 指针示例: pointerplayground 343 13.3.3 使用指针优化性能 347 13.4 小结 350 第14章 反射 351 14.1 自定义特性 351 14.1.1 编写自定义特性 352 14.1.2 自定义特性示例: whatsnewattributes 355 14.2 反射 358 14.2.1 system.type类 358 14.2.2 typeview示例 360 14.2.3 assembly类 362 14.2.4 完成whatsnew attributes示例 364 14.3 小结 368 第15章 错误和异常 369 15.1 异常类 369 15.2 捕获异常 371 15.2.1 实现多个catch块 373 15.2.2 在其他代码中捕获异常 376 15.2.3 system.exception属性 376 15.2.4 没有处理异常时所发生 的情况 377 15.2.5 嵌套的 try块 378 15.3 用户定义的异常类 379 15.3.1 捕获用户定义的异常 380 15.3.2 抛出用户定义的异常 382 15.3.3 定义用户定义的异常类 385 15.4 小结 387 第ⅱ部分 visual studio 第16章 visual studio 2010 391 16.1 使用visual studio 2010 391 16.1.1 创建项目 395 16.1.2 解决方案和项目的区别 401 16.1.3 windows应用程序代码 403 16.1.4 项目的浏览和编码 404 16.1.5 生成项目 411 16.1.6 调试代码 415 16.2 重构工具 418 16.3 面向多个版本的 .net framework 420 16.4 wpf、wcf、wf等 421 16.4.1 在visual studio 2010 中构建wpf应用程序 421 16.4.2 在visual studio 2010 中构建wf应用程序 423 16.5 小结 424 第17章 部署 425 17.1 部署的规划 425 17.1.1 部署选项 426 17.1.2 部署要求 426 17.1.3 部署.net运行库 427 17.2 简单的部署选项 427 17.2.1 xcopy部署 428 17.2.2 xcopy和web 应用程序 428 17.2.3 发布web站点 429 17.3 visual studio 2010安装 和部署项目 429 17.3.1 windows installer 430 17.3.2 创建安装程序 430 17.4 clickonce 437 17.4.1 clickonce操作 437 17.4.2 发布clickonce 应用程序 438 17.4.3 clickonce设置 438 17.4.4 clickonce文件的 应用程序缓存 439 17.4.5 应用程序的安全性 439 17.5 visual studio 2010 高级选项 440 17.5.1 文件系统编辑器 440 17.5.2 注册表编辑器 440 17.5.3 文件类型编辑器 440 17.5.4 用户界面编辑器 441 17.5.5 自定义动作编辑器 442 17.5.6 launch conditions 编辑器 443 17.6 小结 444 第ⅲ部分 基 础 第18章 程序集 447 18.1 程序集的含义 447 18.1.1 程序集的功能 448 18.1.2 程序集的结构 448 18.1.3 程序集清单 449 18.1.4 名称空间、程序集 和组件 449 18.1.5 私有程序集和共享 程序集 449 18.1.6 附属程序集 450 18.1.7 查看程序集 450 18.2 创建程序集 451 18.2.1 创建模块和程序集 451 18.2.2 程序集的特性 452 18.2.3 动态加载和创建 程序集 454 18.3 应用程序域 457 18.4 共享程序集 461 18.4.1 强名 462 18.4.2 使用强名获得完整性 462 18.4.3 全局程序集缓存 463 18.4.4 创建共享程序集 463 18.4.5 创建强名 464 18.4.6 安装共享程序集 465 18.4.7 使用共享程序集 465 18.4.8 程序集的延迟签名 466 18.4.9 引用 467 18.4.10 本机映像生成器 468 18.5 配置.net应用程序 469 18.5.1 配置类别 469 18.5.2 绑定程序集 470 18.6 版本问题 471 18.6.1 版本号 472 18.6.2 通过编程方式获取版本 472 18.6.3 绑定到程序集版本 473 18.6.4 发行者策略文件 474 18.6.5 运行库的版本 475 18.7 小结 476 第19章 检测 477 19.1 代码协定 477 19.1.1 前提条件 479 19.1.2 后置条件 480 19.1.3 常量 481 19.1.4 接口的协定 481 19.2 跟踪 483 19.2.1 跟踪源 484 19.2.2 跟踪开关 485 19.2.3 跟踪侦听器 486 19.2.4 筛选器 488 19.2.5 相关性 489 19.3 事件日志 492 19.3.1 事件日志体系结构 493 19.3.2 事件日志类 494 19.3.3 创建事件源 494 19.3.4 写入事件日志 495 19.3.5 资源文件 496 19.4 性能监控 500 19.4.1 性能监控类 500 19.4.2 性能计数器生成器 500 19.4.3 添加performance counter组件 503 19.4.4 perfmon.exe 505 19.5 小结 506 第20章 线程、任务和同步 507 20.1 概述 507 20.2 异步委托 508 20.2.1 投票 508 20.2.2 等待句柄 509 20.2.3 异步回调 510 20.3 thread类 512 20.3.1 给线程传递数据 513 20.3.2 后台线程 514 20.3.3 线程的优先级 515 20.3.4 控制线程 515 20.4 线程池 516 20.5 任务 517 20.5.1 启动任务 517 20.5.2 连续的任务 518 20.5.3 任务层次结构 519 20.5.4 任务的结果 520 20.6 parallel类 521 20.6.1 用parallel.for() 方法循环 521 20.6.2 使用parallel.foreach() 方法循环 523 20.6.3 通过parallel.invoke() 方法调用多个方法 524 20.7 取消架构 524 20.7.1 parallel.for()方法 的取消 524 20.7.2 任务的取消 526 20.8 线程问题 527 20.8.1 争用条件 527 20.8.2 死锁 530 20.9 同步 532 20.9.1 lock语句和线程安全 532 20.9.2 interlocked类 538 20.9.3 monitor类 539 20.9.4 spinlock结构 540 20.9.5 waithandle基类 540 20.9.6 mutex类 541 20.9.7 semaphore类 542 20.9.8 events类 544 20.9.9 barrier类 547 20.9.10 readerwriterlockslim 类 549 20.10 timer类 552 20.11 基于事件的异步模式 554 20.11.1 backgroundworker 类 554 20.11.2 启用取消功能 557 20.11.3 启用进度功能 558 20.11.4 创建基于事件的异步 组件 559 20.12 小结 563 第21章 安全性 565 21.1 身份验证和授权 565 21.1.1 标识和principal 565 21.1.2 角色 567 21.1.3 声明基于角色的安全性 567 21.1.4 客户端应用程序服务 568 21.2 加密 573 21.2.1 签名 575 21.2.2 交换密钥和安全传输 576 21.3 资源的访问控制 579 21.4 代码访问安全性 582 21.4.1 第2级安全透明性 582 21.4.2 权限 583 21.5 使用证书发布代码 588 21.6 小结 588 第22章 本地化 591 22.1 system.globalization 名称空间 591 22.1.1 unicode问题 592 22.1.2 区域性和区域 592 22.1.3 使用区域性 596 22.1.4 排序 600 22.2 资源 602 22.2.1 创建资源文件 602 22.2.2 资源文件生成器 602 22.2.3 resourcewriter 603 22.2.4 使用资源文件 604 22.2.5 system.resources 名称空间 607 22.3 使用visual studio的 windows窗体本地化 607 22.3.1 通过编程方式修改 区域性 612 22.3.2 使用自定义资源文件 613 22.3.3 资源的自动回退 614 22.3.4 外包翻译 615 22.4 用asp.net本地化 615 22.5 用wpf本地化 617 22.5.1 用于wpf的.net资源 618 22.5.2 xaml资源字典 619 22.6 自定义资源读取器 622 22.6.1 创建databaseresource reader类 623 22.6.2 创建databaseresource set类 625 22.6.3 创建databaseresource manager类 625 22.6.4 databaseresourcereader 的客户端应用程序 626 22.7 创建自定义区域性 626 22.8 小结 628 第23章 system.transactions 629 23.1 概述 629 23.1.1 事务处理阶段 630 23.1.2 acid属性 630 23.2 数据库和实体类 631 23.3 传统的事务 633 23.3.1 ado.net事务 633 23.3.2 system.enterprise services 634 23.4 system.transactions 635 23.4.1 可提交的事务 636 23.4.2 事务处理的升级 638 23.4.3 依赖事务 640 23.4.4 环境事务 642 23.5 隔离级别 649 23.6 自定义资源管理器 650 23.7 windows 7和windows server 2008的事务 656 23.8 小结 660 第24章 网络 661 24.1 webclient类 661 24.1.1 下载文件 662 24.1.2 基本的webclient示例 662 24.1.3 上传文件 663 24.2 webrequest类和 webresponse类 664 24.2.1 身份验证 666 24.2.2 使用代理 666 24.2.3 异步页面请求 666 24.3 把输出结果显示为 html页面 667 24.3.1 从应用程序中进行 简单的web浏览 667 24.3.2 启动internet explorer 实例 669 24.3.3 给应用程序提供更多 的ie类型特性 669 24.3.4 使用webbrowser控件 打印 674 24.3.5 显示请求页面的代码 674 24.3.6 webrequest类 和webresponse类的 层次结构 676 24.4 实用工具类 676 24.4.1 uri 676 24.4.2 ip地址和dns名称 677 24.5 较低层的协议 679 24.5.1 使用smtpclient 680 24.5.2 使用tcp类 682 24.5.3 tcpsend和tcpreceive 示例 682 24.5.4 tcp和udp 684 24.5.5 udp类 684 24.5.6 socket类 685 24.6 小结 689 第25章 windows服务 691 25.1 windows服务 691 25.2 windows服务的体系结构 692 25.2.1 服务程序 692 25.2.2 服务控制程序 694 25.2.3 服务配置程序 694 25.2.4 windows服务的类 694 25.3 创建windows服务程序 694 25.3.1 创建服务的核心功能 695 25.3.2 quoteclient示例 698 25.3.3 windows服务程序 699 25.3.4 线程和服务 703 25.3.5 服务的安装 704 25.3.6 安装程序 704 25.4 服务的监视和控制 708 25.4.1 mmc管理单元 708 25.4.2 net.exe实用程序 709 25.4.3 sc.exe实用程序 710 25.4.4 visual studio server explorer 710 25.4.5 编写自定义 servicecontroller类 710 25.5 故障排除和事件日志 718 25.6 小结 719 第26章 互操作性 721 26.1 .net和com 721 26.1.1 元数据 722 26.1.2 释放内存 722 26.1.3 接口 722 26.1.4 方法的绑定 724 26.1.5 数据类型 724 26.1.6 注册 724 26.1.7 线程 725 26.1.8 错误处理 726 26.1.9 事件 727 26.2 编组 727 26.3 从.net客户端中使用 com组件 728 26.3.1 创建com组件 728 26.3.2 创建rcw 734 26.3.3 使用rcw 735 26.3.4 使用com服务器和 动态语言扩展 736 26.3.5 线程问题 737 26.3.6 添加连接点 737 26.4 从com客户端中使用 .net组件 739 26.4.1 ccm 740 26.4.2 创建.net组件 740 26.4.3 创建类型库 741 26.4.4 com互操作特性 743 26.4.5 com注册 745 26.4.6 创建com客户端 应用程序 746 26.4.7 添加连接点 747 26.4.8 用sink对象创建 客户端 748 26.5 平台调用 750 26.6 小结 754 第27章 核心xaml 755 27.1 概述 755 27.1.1 元素映射到.net 对象上 756 27.1.2 使用自定义.net类 757 27.1.3 把特性用作属性 759 27.1.4 把特性用作元素 759 27.1.5 基本的.net类型 760 27.1.6 集合 760 27.1.7 构造函数 761 27.2 依赖属性 761 27.2.1 创建依赖类型 762 27.2.2 强制值回调 763 27.2.3 值变更回调和事件 764 27.2.4 事件的冒泡和隧道 764 27.3 附加属性 767 27.4 标记扩展 770 27.5 创建自定义标记扩展 770 27.6 xaml定义的标记扩展 772 27.7 读写xaml 772 27.8 小结 773 第28章 managed extensibility framework 775 28.1 mef的体系结构 775 28.2 协定 782 28.3 导出 783 28.3.1 导出属性和方法 787 28.3.2 导出元数据 789 28.4 导入 791 28.5 容器和出口提供程序 794 28.6 类别 797 28.7 小结 798 第29章 文件和注册表操作 799 29.1 管理文件系统 799 29.1.1 表示文件和文件夹 的.net类 800 29.1.2 path类 803 29.1.3 fileproperties示例 803 29.2 移动、复制和删除文件 808 29.2.1 filepropertiesandmovement 示例 808 29.2.2 filepropertiesandmovement 示例的代码 809 29.3 读写文件 812 29.3.1 读取文件 812 29.3.2 写入文件 814 29.3.3 流 815 29.3.4 缓存的流 816 29.3.5 使用filestream类读写 二进制文件 816 29.3.6 读写文本文件 821 29.4 映射内存的文件 827 29.5 读取驱动器信息 829 29.6 文件的安全性 831 29.6.1 从文件中读取acl 831 29.6.2 从目录中读取acl 832 29.6.3 添加和删除文件中 的acl项 833 29.7 读写注册表 835 29.7.1 注册表 835 29.7.2 .net注册表类 837 29.8 读写独立存储器 839 29.9 小结 844 第ⅳ部分 数 据 第30章 核心ado.net 847 30.1 ado.net概述 847 30.1.1 名称空间 848 30.1.2 共享类 848 30.1.3 数据库专用的类 849 30.2 使用数据库连接 850 30.2.1 管理连接字符串 851 30.2.2 高效地使用连接 852 30.2.3 事务 854 30.3 命令 855 30.3.1 执行命令 856 30.3.2 调用存储过程 860 30.4 快速数据访问: 数据读取器 862 30.5 管理数据和关系: dataset类 865 30.5.1 数据表 866 30.5.2 数据列 866 30.5.3 数据关系 871 30.5.4 数据约束 872 30.6 xml架构:用xsd 生成代码 875 30.7 填充dataset类 881 30.7.1 用数据适配器填充 dataset 882 30.7.2 从xml中填充 dataset类 883 30.8 持久化dataset类的修改 883 30.8.1 通过数据适配器进行 更新 883 30.8.2 写入xml输出结果 886 30.9 使用ado.net 887 30.9.1 分层开发 887 30.9.2 生成sql server的键 888 30.9.3 命名约定 891 30.10 小结 892 第31章 ado.net entity framework 893 31.1 ado.net entity framework概述 893 31.2 entity framework映射 894 31.2.1 逻辑层 895 31.2.2 概念层 897 31.2.3 映射层 898 31.3 entity client 899 31.3.1 连接字符串 900 31.3.2 entity sql 900 31.4 实体 901 31.5 对象上下文 904 31.6 关系 906 31.6.1 一个层次结构一个表 907 31.6.2 一种类型一个表 908 31.6.3 懒惰加载、延迟加载 和预先加载 909 31.7 对象查询 910 31.8 更新 913 31.8.1 对象跟踪 913 31.8.2 改变信息 914 31.8.3 附加和分离实体 916 31.8.4 存储实体的变化 916 31.9 linq to entities 917 31.10 小结 918 第32章 数据服务 919 32.1 概述 919 32.2 包含clr对象的自定义 宿主 920 32.2.1 clr对象 920 32.2.2 数据模型 922 32.2.3 数据服务 923 32.2.4 驻留服务 923 32.2.5 其他服务操作 924 32.3 http客户端应用程序 925 32.4 使用wcf数据服务和 ado.net entity framework 929 32.4.1 asp.net宿主和edm 929 32.4.2 使用system.data .service.client的.net 应用程序 931 32.5 小结 938 第33章 处理xml 939 33.1 .net支持的xml标准 940 33.2 system.xml名称空间 940 33.3 使用system.xml类 941 33.4 读写流格式的xml 942 33.4.1 使用 xmlreader类 942 33.4.2 使用xmlreader类进行 验证 946 33.4.3 使用xmlwriter类 947 33.5 在.net中使用dom 949 33.6 使用xpathnavigator类 954 33.6.1 system.xml.xpath 名称空间 954 33.6.2 system.xml.xsl 名称空间 959 33.6.3 调试xslt 963 33.7 xml和ado.net 965 33.7.1 将ado.net数据 转换为xml文档 965 33.7.2 把xml文档转换为 ado.net数据 970 33.8 在xml中序列化对象 972 33.9 linq to xml和.net 982 33.10 使用不同的xml对象 982 33.10.1 xdocument对象 982 33.10.2 xelement对象 983 33.10.3 xnamespace对象 984 33.10.4 xcomment对象 986 33.10.5 xattribute对象 986 33.11 使用linq查询xml 文档 987 33.11.1 查询静态的xml 文档 987 33.11.2 查询动态的xml 文档 989 33.12 xml文档的更多查询 技术 990 33.12.1 读取xml文档 990 33.12.2 写入xml文档 992 33.13 小结 993 第34章 .net编程和sql server 995 34.1 .net运行库的宿主 995 34.2 microsoft.sqlserver.server 997 34.3 用户定义的类型 998 34.3.1 创建udt 998 34.3.2 通过sql使用udt 1003 34.3.3 从客户端代码中使用 udt 1004 34.4 用户定义的聚合函数 1005 34.4.1 创建用户定义的 聚合函数 1006 34.4.2 使用用户定义的 聚合函数 1007 34.5 存储过程 1007 34.5.1 创建存储过程 1008 34.5.2 使用存储过程 1009 34.6 用户定义的函数 1010 34.6.1 创建用户定义的函数 1010 34.6.2 使用用户定义的函数 1010 34.7 触发器 1011 34.7.1 创建触发器 1011 34.7.2 使用触发器 1012 34.8 xml数据类型 1013 34.8.1 包含xml数据的表 1013 34.8.2 读取xml值 1014 34.8.3 数据的查询 1017 34.8.4 xml数据修改语言 (xml dml) 1019 34.8.5 xml索引 1020 34.8.6 强类型化的xml 1021 34.9 小结 1022 第ⅴ部分 显 示 第35章 核心wpf 1025 35.1 概述 1025 35.1.1 名称空间 1025 35.1.2 类层次结构 1027 35.2 形状 1028 35.3 几何图形 1030 35.4 变换 1032 35.5 画笔 1033 35.5.1 solidcolorbrush 1033 35.5.2 lineargradientbrush 1034 35.5.3 radialgradientbrush 1034 35.5.4 drawingbrush 1035 35.5.5 imagebrush 1035 35.5.6 visualbrush 1036 35.6 控件 1037 35.6.1 简单控件 1037 35.6.2 内容控件 1038 35.6.3 带标题的内容控件 1039 35.6.4 项控件 1040 35.6.5 带标题的项控件 1041 35.6.6 修饰 1041 35.7 布局 1042 35.7.1 stackpanel 1042 35.7.2 wrappanel 1043 35.7.3 canvas 1044 35.7.4 dockpanel 1044 35.7.5 grid 1045 35.8 样式和资源 1046 35.8.1 样式 1046 35.8.2 资源 1048 35.8.3 系统资源 1049 35.8.4 从代码中访问资源 1050 35.8.5 动态资源 1050 35.8.6 资源字典 1051 35.9 触发器 1052 35.9.1 属性触发器 1053 35.9.2 多触发器 1054 35.9.3 数据触发器 1055 35.10 模板 1056 35.10.1 控件模板 1057 35.10.2 数据模板 1060 35.10.3 样式化列表框 1061 35.10.4 itemtemplate 1062 35.10.5 列表框元素的控件 模板 1064 35.11 动画 1066 35.11.1 时间轴 1066 35.11.2 非线性动画 1069 35.11.3 事件触发器 1069 35.11.4 关键帧动画 1072 35.12 可见状态管理器 1073 35.13 3-d 1076 35.13.1 模型 1077 35.13.2 照相机 1079 35.13.3 光线 1079 35.13.4 旋转 1079 35.14 小结 1080 第36章 用wpf编写业务 应用程序 1083 36.1 数据绑定 1083 36.1.1 booksdemo应用程序 1084 36.1.2 用xaml绑定 1086 36.1.3 简单对象的绑定 1088 36.1.4 更改通知 1090 36.1.5 对象数据提供程序 1092 36.1.6 列表绑定 1094 36.1.7 主从绑定 1096 36.1.8 多绑定 1097 36.1.9 优先绑定 1099 36.1.10 值的转换 1100 36.1.11 动态添加列表项 1102 36.1.12 数据模板选择器 1103 36.1.13 绑定到xml上 1105 36.1.14 绑定的验证 1107 36.2 commanding 1111 36.2.1 定义命令 1112 36.2.2 定义命令源 1113 36.2.3 命令绑定 1113 36.3 treeview 1114 36.4 datagrid 1118 36.4.1 自定义列 1120 36.4.2 行的细节 1121 36.4.3 用datagrid进行分组 1121 36.5 小结 1124 第37章 用wpf创建文档 1125 37.1 文本元素 1125 37.1.1 字体 1125 37.1.2 texteffect 1127 37.1.3 内联 1128 37.1.4 块 1130 37.1.5 列表 1132 37.1.6 表 1132 37.1.7 块的锚定 1134 37.2 流文档 1135 37.3 固定文档 1136 37.4 xps文档 1140 37.5 打印 1141 37.5.1 用printdialog打印 1142 37.5.2 打印可见元素 1142 37.6 小结 1144 第38章 silverlight 1145 38.1 wpf和silverlight的比较 1145 38.2 创建silverlight项目 1146 38.3 导航 1148 38.4 网络 1152 38.4.1 创建ado.net entity data model 1153 38.4.2 为silverlight客户端 创建wcf服务 1153 38.4.3 调用wcf服务 1155 38.4.4 使用wcf数据服务 1158 38.4.5 使用system.net访问 服务 1160 38.5 浏览器集成 1162 38.5.1 调用javascript 1162 38.5.2 javascript调用 silverlight 1163 38.6 在浏览器外运行的 silverlight应用程序 1164 38.7 小结 1167 第39章 windows窗体 1169 39.1 创建windows窗体 应用程序 1169 39.2 control类 1175 39.2.1 大小和位置 1175 39.2.2 外观 1176 39.2.3 用户交互操作 1176 39.2.4 windows功能 1177 39.2.5 其他功能 1177 39.3 标准控件和组件 1178 39.3.1 button控件 1178 39.3.2 checkbox控件 1178 39.3.3 radiobutton控件 1179 39.3.4 combobox控件、 listbox控件和 checkedlistbox控件 1179 39.3.5 datagridview控件 1180 39.3.6 datetimepicker控件 1188 39.3.7 errorprovider组件 1188 39.3.8 imagelist组件 1189 39.3.9 label控件 1189 39.3.10 listview控件 1189 39.3.11 picturebox控件 1189 39.3.12 progressbar控件 1190 39.3.13 textbox控件、 richtextbox控件与 maskedtextbox控件 1190 39.3.14 panel控件 1191 39.3.15 flowlayoutpanel和 tablelayoutpanel 控件 1191 39.3.16 splitcontainer控件 1192 39.3.17 tabcontrol控件和 tabpages控件 1192 39.3.18 toolstrip控件 1193 39.3.19 menustrip控件 1194 39.3.20 contextmenustrip 控件 1194 39.3.21 toolstripmenuitem 控件 1194 39.3.22 toolstripmanager类 1194 39.3.23 toolstripcontainer 控件 1195 39.4 窗体 1195 39.4.1 form类 1195 39.4.2 多文档界面 1199 39.4.3 创建自己的用户控件 1200 39.5 小结 1200 第40章 核心asp.net 1201 40.1 asp.net概述 1201 40.1.1 asp.net文件的 处理方式 1202 40.1.2 web站点和web 应用程序 1202 40.1.3 asp.net中的状态 管理 1203 40.2 asp.net web窗体 1203 40.2.1 asp.net代码模型 1207 40.2.2 asp.net服务器控件 1208 40.3 ado.net和数据绑定 1222 40.3.1 更新事件登记 应用程序 1222 40.3.2 数据绑定的更多内容 1229 40.4 应用程序配置 1234 40.5 小结 1236 第41章 asp.net的功能 1237 41.1 用户控件和自定义控件 1238 41.1.1 用户控件 1238 41.1.2 pcsdemosite中的 用户控件 1242 41.1.3 自定义控件 1243 41.2 母版页 1247 41.2.1 在web页面中 访问母版页 1248 41.2.2 嵌套的母版页 1248 41.2.3 pcsdemosite中 的母版页 1249 41.3 站点导航 1250 41.3.1 添加站点地图文件 1251 41.3.2 pcsdemosite中 的导航 1252 41.4 安全性 1253 41.4.1 使用security setup 添加forms身份验证 功能 1254 41.4.2 实现登录系统 1255 41.4.3 web 登录服务器控件 1255 41.4.4 保护目录 1256 41.4.5 pcsdemosite中的 安全性 1257 41.5 主题 1259 41.5.1 把主题应用于页面 1259 41.5.2 定义主题 1260 41.5.3 pcsdemosite中的 主题 1260 41.6 web部件 1263 41.6.1 web部件应用程序 组件 1263 41.6.2 web部件示例 1264 41.7 asp.net ajax 1270 41.8 ajax的概念 1271 41.9 asp.net ajax 1273 41.9.1 核心功能 1273 41.9.2 asp.net ajax control toolkit 1275 41.10 asp.net ajax网站 示例 1276 41.11 支持asp.net ajax的 网站配置 1278 41.12 添加asp.net ajax 功能 1279 41.12.1 scriptmanager控件 1280 41.12.2 使用updatepanel 控件 1281 41.12.3 使用updateprogress 1283 41.12.4 使用扩展控件 1284 41.13 使用ajax库 1286 41.13.1 给web页面添加 javascript 1286 41.13.2 全局实用程序函数 1287 41.13.3 使用ajax库 javascript oop 扩展 1287 41.13.4 pagerequestmanager 对象和application 对象 1289 41.13.5 javascript的调试 1292 41.13.6 异步调用web方法 1293 41.13.7 asp.net应用程序 服务 1294 41.14 小结 1294 第42章 asp.net动态数据 和mvc 1297 42.1 路由 1298 42.1.1 查询字符串参数 1298 42.1.2 定义路由 1300 42.1.3 使用路由参数 1303 42.2 动态数据 1305 42.2.1 创建动态数据网站 1305 42.2.2 定制动态数据网站 1310 42.2.3 进一步开发 1314 42.3 mvc 1314 42.3.1 mvc的含义 1314 42.3.2 asp.net mvc的 含义 1315 42.3.3 简单的asp.net mvc 应用程序 1315 42.3.4 定制asp.net mvc 应用程序 1321 42.3.5 进一步开发 1329 42.4 小结 1330 第ⅵ部分 通 信 第43章 wcf 1333 43.1 wcf概述 1333 43.1.1 soap 1335 43.1.2 wsdl 1335 43.1.3 rest 1335 43.1.4 json 1336 43.2 简单的服务和客户端 1336 43.2.1 服务协定 1337 43.2.2 服务的实现 1338 43.2.3 wcf服务宿主和 wcf测试客户端 1338 43.2.4 自定义服务宿主 1340 43.2.5 wcf客户端 1342 43.2.6 诊断 1343 43.3 协定 1345 43.3.1 数据协定 1345 43.3.2 版本问题 1346 43.3.3 服务协定 1346 43.3.4 消息协定 1347 43.4 服务的实现 1348 43.4.1 以编程方式创建 客户端 1351 43.4.2 错误处理 1352 43.5 绑定 1353 43.6 宿主 1356 43.6.1 自定义宿主 1356 43.6.2 was宿主 1357 43.6.3 预配置的宿主类 1357 43.7 客户端 1358 43.8 双工通信 1360 43.9 小结 1362 第44章 windows wf 4 1363 44.1 hello world示例 1363 44.2 活动 1365 44.2.1 if活动 1366 44.2.2 invokemethod活动 1367 44.2.3 parallel活动 1367 44.2.4 delay活动 1368 44.2.5 pick活动 1368 44.3 自定义活动 1369 44.3.1 活动的验证 1370 44.3.2 设计器 1371 44.3.3 自定义复合活动 1373 44.4 工作流 1375 44.4.1 实参和变量 1376 44.4.2 workflowapplication 1377 44.4.3 workflowservicehost 1381 44.4.4 驻留设计器 1386 44.5 小结 1391 第45章 对等网络 1393 45.1 p2p网络概述 1393 45.1.1 客户端-服务器体系 结构 1393 45.1.2 p2p体系结构 1394 45.1.3 p2p体系结构的挑战 1395 45.1.4 p2p术语 1396 45.1.5 p2p解决方案 1396 45.2 microsoft windows peer-to-peer networking 1396 45.2.1 pnrp 1396 45.2.2 people near me 1399 45.3 构建p2p应用程序 1400 45.3.1 system.net.peertopeer 1400 45.3.2 system.net.peertopeer .collaboration 1405 45.4 小结 1408 第46章 消息队列 1409 46.1 概述 1409 46.1.1 使用消息队列的场合 1410 46.1.2 消息队列功能 1411 46.2 message queuing产品 1412 46.3 消息队列体系结构 1412 46.3.1 消息 1413 46.3.2 消息队列 1413 46.4 message queuing 管理工具 1414 46.4.1 创建消息队列 1414 46.4.2 消息队列属性 1415 46.5 消息队列的编程实现 1415 46.5.1 创建消息队列 1415 46.5.2 查找队列 1416 46.5.3 打开已知队列 1417 46.5.4 发送消息 1418 46.5.5 接收消息 1421 46.6 课程订单应用程序 1423 46.6.1 课程订单类库 1423 46.6.2 课程订单消息 发送程序 1424 46.6.3 发送优先级和可恢复 的消息 1425 46.6.4 课程订单消息接收 程序 1426 46.7 接收结果 1429 46.7.1 确认队列 1430 46.7.2 响应队列 1430 46.8 事务队列 1431 46.9 消息队列和wcf 1432 46.9.1 带数据协定的实体类 1432 46.9.2 wcf服务协定 1433 46.9.3 wcf消息接收 应用程序 1434 46.9.4 wcf消息发送 应用程序 1437 46.10 消息队列的安装 1438 46.11 小结 1438 第47章 syndication 1441 47.1 system.servicemodel. syndication名称空间 概述 1441 47.2 读取联合源的示例 1442 47.3 联合源的示例 1444 47.4 小结 1449 第ⅶ部分 附 录 附录a 1453 ***以下内容见随书附赠光盘*** 第48章 使用gdi+绘图 e1 48.1 理解绘图规则 e1 48.1.1 gdi和gdi+ e2 48.1.2 绘制图形 e3 48.1.3 使用onpaint()方法 绘制图形 e6 48.1.4 使用剪切区域 e7 48.2 测量坐标和区域 e9 48.2.1 point和pointf结构 e9 48.2.2 size和sizef结构 e10 48.2.3 rectangle和rectanglef 结构 e11 48.2.4 region e12 48.3 调试须知 e13 48.4 绘制可滚动的窗口 e14 48.5 世界、页面和设备坐标 e18 48.6 颜色 e19 48.6.1 rgb值 e19 48.6.2 命名颜色 e20 48.6.3 图形显示模式和安全 的调色板 e20 48.6.4 安全调色板 e21 48.7 画笔和钢笔 e21 48.7.1 画笔 e22 48.7.2 钢笔 e23 48.8 绘制图形和线条 e23 48.9 显示图像 e25 48.10 处理图像时的问题 e27 48.11 绘制文本 e28 48.12 简单的文本示例 e29 48.13 字体和字体系列 e30 48.14 示例:枚举字体系列 e31 48.15 编辑文本文档: capseditor示例 e33 48.15.1 invalidate()方法 e37 48.15.2 计算项的大小和文档 的大小 e38 48.15.3 onpaint()方法 e39 48.15.4 坐标转换 e41 48.15.5 响应用户的输入 e42 48.16 打印 e45 48.17 小结 e50 第49章 vsto e51 49.1 vsto概述 e51 49.1.1 项目类型 e52 49.1.2 项目功能 e54 49.2 vsto项目基础 e55 49.2.1 office对象模型 e55 49.2.2 vsto名称空间 e55 49.2.3 宿主项和宿主控件 e56 49.2.4 基本的vsto项目 结构 e57 49.2.5 globals类 e60 49.2.6 事件处理 e60 49.3 构建vsto解决方案 e61 49.3.1 管理应用程序级插件 e62 49.3.2 与应用程序和文档 交互操作 e63 49.3.3 ui的自定义 e64 49.4 示例应用程序 e68 49.5 小结 e78 第50章 maf e79 50.1 maf体系结构 e79 50.1.1 管道 e80 50.1.2 发现 e81 50.1.3 激活和隔离 e82 50.1.4 协定 e83 50.1.5 生命周期 e84 50.1.6 版本问题 e85 50.2 插件示例 e86 50.2.1 插件协定 e86 50.2.2 计算器插件视图 e87 50.2.3 计算器插件适配器 e88 50.2.4 计算器插件 e90 50.2.5 计算器宿主视图 e91 50.2.6 计算机宿主适配器 e91 50.2.7 计算器宿主 e93 50.2.8 其他插件 e97 50.3 小结 e97 第51章 enterprise services e99 51.1 使用enterprise services e99 51.1.1 简史 e100 51.1.2 使用enterprise services 的场合 e100 51.1.3 重要功能 e101 51.2 创建简单的com+应用 程序 e103 51.2.1 servicedcomponent类 e103 51.2.2 程序集的属性 e103 51.2.3 创建组件 e104 51.3 部署 e106 51.3.1 自动部署 e106 51.3.2 手工部署 e106 51.3.3 创建安装软件包 e106 51.4 组件服务管理器 e107 51.5 客户端应用程序 e108 51.6 事务 e109 51.6.1 事务的特性 e109 51.6.2 事务的结果 e110 51.7 示例应用程序 e111 51.7.1 实体类 e111 51.7.2 ordercontrol组件 e113 51.7.3 orderdata组件 e114 51.7.4 orderlinedata组件 e116 51.7.5 客户端应用程序 e117 51.8 集成wcf和enterprise services e118 51.8.1 wcf服务外观 e118 51.8.2 客户端应用程序 e122 51.9 小结 e123 第52章 目录服务 e125 52.1 active directory的 体系结构 e126 52.1.1 active directory的 功能 e126 52.1.2 active directory的 概念 e126 52.1.3 active directory数据 的特征 e129 52.1.4 指定架构 e130 52.2 active directory的 管理工具 e131 52.2.1 active directory users and computers工具 e131 52.2.2 adsi edit工具 e132 52.3 active directory编程 e133 52.3.1 system.directoryservices 名称空间中的类 e134 52.3.2 绑定到directory services e134 52.3.3 获取目录项 e138 52.3.4 对象集合 e140 52.3.5 缓存 e141 52.3.6 创建新对象 e141 52.3.7 更新目录项 e142 52.3.8 访问本地adsi对象 e143 52.3.9 在active directory 中搜索 e144 52.4 搜索用户对象 e148 52.4.1 用户界面 e148 52.4.2 获取架构命名上下文 e149 52.4.3 获取user类的属性名 e149 52.4.4 搜索用户对象 e150 52.5 账户管理 e152 52.5.1 显示用户信息 e152 52.5.2 创建用户 e153 52.5.3 重置密码 e153 52.5.4 创建组 e154 52.5.5 在组中添加用户 e154 52.5.6 查找用户 e154 52.6 dsml e155 52.6.1 system.directoryservices. protocols名称空间中 的类 e156 52.6.2 用dsml搜索 active directory对象 e156 52.7 小结 e157 第53章 c#、visual basic、 c++/cli和f# e159 53.1 名称空间 e160 53.2 定义类型 e161 53.2.1 引用类型 e161 53.2.2 值类型 e162 53.2.3 类型推断 e163 53.2.4 接口 e164 53.2.5 枚举 e165 53.3 方法 e166 53.3.1 方法的参数和返回 类型 e166 53.3.2 参数修饰符 e167 53.3.3 构造函数 e168 53.3.4 属性 e170 53.3.5 对象初始值设定项 e171 53.3.6 扩展方法 e171 53.4 静态成员 e172 53.5 数组 e173 53.6 控制语句 e174 53.6.1 if语句 e174 53.6.2 条件操作符 e174 53.6.3 switch语句 e175 53.7 循环 e176 53.7.1 for语句 e176 53.7.2 while和do…while 语句 e177 53.7.3 foreach语句 e178 53.8 异常处理 e178 53.9 继承 e180 53.9.1 访问修饰符 e180 53.9.2 关键字 e181 53.10 资源管理 e183 53.10.1 idisposable接口的 实现 e183 53.10.2 using语句 e184 53.10.3 重写finalize()方法 e184 53.11 委托 e186 53.12 事件 e188 53.13 泛型 e190 53.14 linq查询 e192 53.15 c++/cli混合本地代码 和托管代码 e192 53.16 c#的特殊功能 e193 53.17 小结 e194 第54章 .net remoting e195 54.1 使用.net remoting的 原因 e195 54.2 .net remoting术语详解 e197 54.2.1 客户端通信 e198 54.2.2 服务器端通信 e199 54.3 上下文 e199 54.3.1 激活 e200 54.3.2 特性和属性 e200 54.3.3 上下文之间的通信 e201 54.4 远程对象、客户端和 服务器 e201 54.4.1 远程对象 e201 54.4.2 简单的服务器应用 程序 e202 54.4.3 简单的客户端应用 程序 e203 54.5 .net remoting体系结构 e204 54.5.1 信道 e204 54.5.2 格式化程序 e207 54.5.3 channelservices和 remotingconfiguration e207 54.5.4 对象的激活 e209 54.5.5 消息接收器 e212 54.5.6 在远程方法中传递对象 e213 54.5.7 生命周期管理 e216 54.6 配置文件 e218 54.6.1 知名对象的服务器 配置 e220 54.6.2 知名对象的客户端 配置 e220 54.6.3 客户端激活的对象的 服务器配置 e221 54.6.4 客户端激活的对象的 客户端配置 e222 54.6.5 使用配置文件的 服务器代码 e222 54.6.6 使用配置文件的 客户端代码 e223 54.6.7 客户端信道的延迟 加载 e223 54.6.8 调试配置 e224 54.6.9 配置文件中的生命 周期服务 e224 54.6.10 格式化程序提供程序 e225 54.7 在asp.net中驻留远程 服务器 e225 54.8 类、接口和soapsuds e227 54.8.1 接口 e227 54.8.2 soapsuds e227 54.9 异步远程调用 e228 54.9.1 使用委托和 .net remoting e228 54.9.2 oneway特性 e229 54.10 .net remoting的 安全性 e229 54.11 远程处理和事件 e230 54.11.1 远程对象 e231 54.11.2 事件参数 e232 54.11.3 服务器 e233 54.11.4 服务器配置文件 e233 54.11.5 事件接收器 e234 54.11.6 客户端 e234 54.11.7 客户端配置文件 e235 54.11.8 运行程序 e236 54.12 调用上下文 e236 54.13 小结 e237 第55章 web服务和asp.net e239 55.1 soap e240 55.2 wsdl e241 55.3 web服务 e242 55.3.1 提供web服务 e242 55.3.2 使用web服务 e246 55.4 扩充事件登记示例 e248 55.4.1 事件登记 web服务 e249 55.4.2 事件登记客户端 e253 55.5 使用soap标题交换 数据 e256 55.6 小结 e261 第56章 linq to sql e263 56.1 linq to sql和 visual studio 2010 e264 56.1.1 调用products表 e265 56.1.2 添加linq to sql类 e265 56.1.3 o/r设计器概述 e266 56.1.4 创建product对象 e267 56.2 对象如何映射到linq 对象上 e269 56.2.1 datacontext对象 e270 56.2.2 table[tentity]对象 e274 56.3 脱离o/r设计器工作 e274 56.3.1 创建自己的自定义 对象 e274 56.3.2 通过自定义对象和 linq查询 e275 56.3.3 通过查询限制所调用 的列 e276 56.3.4 使用列名 e277 56.3.5 创建自己的 datacontext对象 e278 56.4 自定义对象和o/r 设计器 e279 56.5 查询数据库 e280 56.5.1 使用查询表达式 e280 56.5.2 查询表达式 e281 56.5.3 使用表达式筛选 e282 56.5.4 执行连接 e282 56.5.5 分组项 e284 56.6 存储过程 e285 56.7 小结 e286 第57章 wpf 3.0 e287 57.1 hello world示例 e287 57.2 活动 e288 57.2.1 ifelseactivity e289 57.2.2 parallelactivity e290 57.2.3 callexternalmethod activity e291 57.2.4 delayactivity e291 57.2.5 listenactivity e292 57.2.6 活动执行模型 e293 57.3 自定义活动 e293 57.3.1 活动的验证 e295 57.3.2 主题和设计器 e296 57.3.3 activitytoolboxitem 和图标 e297 57.3.4 自定义复合活动 e299 57.4 工作流 e305 57.4.1 顺序工作流 e305 57.4.2 状态机工作流 e305 57.4.3 给工作流传递参数 e307 57.4.4 从工作流中返回结果 e308 57.4.5 将参数绑定到活动上 e309 57.5 工作流运行库 e310 57.6 工作流服务 e310 57.6.1 持久性服务 e312 57.6.2 跟踪服务 e313 57.6.3 自定义服务 e315 57.7 与wcf集成 e316 57.8 驻留工作流 e318 57.9 工作流设计器 e319 57.10 从wf 3.x迁移到wf 4 e320 57.10.1 把活动代码提取到 服务中 e320 57.10.2 删除代码活动 e320 57.10.3 同时运行wf 3.x 和4 e321 57.10.4 考虑把状态机迁移到 流程图上 e321 57.11 小结 e321 ................ ..................
31.12MB
C#开发典型模块大全
2014-03-12第1章 认识C#及开发环境 1.1 C#概述 2 1.1.1 C#发展历程 2 1.1.2 C#语言编程环境 2 1.2 .NET Framework 2.0简介 2 1.2.1 什么是.NET Framework 2.0 2 1.2.2 .NET Framework 2.0特性 3 1.3 安装集成开发环境Visual Studio 2005 4 1.3.1 安装Visual Studio 2005开发环境 4 1.3.2 安装MSDN帮助 7 1.3.3 如何使用MSDN帮助 9 1.3.4 利用MSDN帮助附带的示例学习编程 11 1.4 启动Visual Studio 2005开发环境 12 1.4.1 启动Visual Studio 2005 12 1.4.2 创建项目 12 1.5 熟悉Visual Studio 2005集成开发环境 13 1.5.1 新特性 14 1.5.2 主窗口 14 1.5.3 菜单栏 14 1.5.4 工具栏 18 1.5.5 文档窗口 18 1.5.6 工具箱窗口 19 1.5.7 解决方案资源管理器窗口 20 1.5.8 属性窗口 20 1.5.9 代码编辑器 21 1.5.10 “错误列表”面板 22 1.5.11 “输出”面板 22 1.6 程序调试 22 1.6.1 断点操作 22 1.6.2 使用开始、中断和停止执行功能调试程序 23 1.6.3 单步执行 25 1.6.4 运行到程序的指定位置 25 第2章 QQ企业通 2.1 设计思路 28 2.2 关键技术 28 2.2.1 INI文件的应用 28 2.2.2 线程的应用 30 2.2.3 在Socket中发送大容量的消息 30 2.2.4 将流序列化或反序列化为对象 31 2.2.5 用InnerList列表记录信息 31 2.3 设计过程 32 2.3.1 类库的设计 33 2.3.2 客户端注册模块设计 40 2.3.3 客户端登录模块设计 42 2.3.4 客户端QQ模块设计 43 2.3.5 客户端消息发送模块设计 48 2.3.6 服务器端控制台模块设计 52 第3章 SQL数据表提取器模块 3.1 概述 56 3.2 关键技术 56 3.2.1 如何备份数据库 56 3.2.2 如何还原数据库 57 3.2.3 如何附加数据库 58 3.2.4 如何分离数据库 59 3.2.5 设置数据库模式 59 3.3 设计过程 61 3.3.1 主窗体 61 3.3.2 获取服务器名称 62 3.3.3 获取所有数据库 63 3.3.4 获取所有数据表 64 3.3.5 备份数据库 66 3.3.6 还原数据库 67 3.3.7 附加数据库 68 3.3.8 分离数据库 70 3.3.9 导出表结构 71 3.3.10 导出数据 74 第4章 万能搜索模块 4.1 设计思路 80 4.2 关键技术 80 4.2.1 如何制作一个接口程序 80 4.2.2 实现接口程序的信息互传 80 4.2.3 如何将接口程序加载到其他程序中 82 4.2.4 怎样操作RichtextBox控件的选择文本 82 4.2.5 如何获取数据表中字段的描述信息 83 4.3 设计过程 83 4.3.1 获取数据表中字段的中文信息 84 4.3.2 添加数据表的查询条件 86 4.3.3 向SQL语句中添加括号 89 4.3.4 查询生成后的SQL语句 90 4.3.5 主程序获得接口信息 92 第5章 万能打印模块 5.1 设计思路 94 5.2 关键技术 94 5.2.1 打印设置(PrintDocument类) 94 5.2.2 打印预览对话框(PrintPreview Dialog) 95 5.2.3 打印对话框(PrintDialog) 96 5.2.4 获取指定颜色值和字体样式 97 5.2.5 DataGridView控件的相关应用 97 5.3 设计过程 98 5.3.1 打印信息的设置 98 5.3.2 表格样式的设置 100 5.3.3 打印类的设置 101 5.3.4 打印数据信息 108 第6章 决策分析模块 6.1 设计思路 112 6.2 关键技术 112 6.2.1 游标的基本操作 112 6.2.2 存储过程的基本操作 115 6.2.3 透视表的基本概念 117 6.2.4 统计表的基本操作 117 6.2.5 单击显示右键菜单 118 6.3 设计过程 118 6.3.1 主窗体的初始化 119 6.3.2 透视表的筛选 127 6.3.3 透视表的设计 130 6.3.4 统计表的设计 132 第7章 自定义图表控件 7.1 设计思路 136 7.2 关键技术 137 7.2.1 控件的生
10.0MB
《C#高级编程第七版》中文(ProfessionalC#4.0and.NET4)[共十卷][VOL4]
2011-05-26该版本已添加目录标签 并修正了一些错误 中文名: C#高级编程 第七版 原名: Professional C# 4.0 and .NET 4 别名: C#高级编程(第7版) 作者: (美)Christian Nagel Bill Evjen Jay Glynn.译者: 无.资源格式: PDF 版本: 影印版 出版社: worx.书号: ISBN:9787302239376.发行时间: 2010年 地区: 大陆 语言: 中文 本书是Wrox畅销书,C#经典名著!2009年度全行业优秀畅销书。自第一版出版以来,都是国内读者的普遍好评,累计销量近十万册。 《C#高级编程(第7版)》的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写 Windows应用程序和ASP.NET Web应用程序。 本书几乎涵盖C#语言的所有功能,对于C#初学者和有经验的程序员是值得大力推荐的书籍。实践证明,本书是关于C# 和 Visual Studio的一本全面 而且权威的参考书。 新的C# 4对于在Visual Studio 2010中编写代码是必不可少的。这本实用指南强调,C#是编写.NET 4应用程序的首选语言。《C#高级编程(第7版)》 的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写Windows应用程序和ASP.NET Web应用程序。 本书主要内容 ◆ 回顾.NET体系结构、对象、泛型、继承、数组、运算符、类型强制转换、委托、事件、Lambda表达式等 ◆ 详细论述C#中的动态对象、命名参数和可选参数、COM专用的交互操作功能、安全类型变体 ◆ 阐述.NET 4的新增功能、WF 4、ADO.NET 数据服务、MEF、并行任务库和PLINQ ◆ 深入探讨LINQ、WCF、WPF、流文档和固定文档及Silverlight等功能强大的技术 ◆ 回顾ASP.NET编程,介绍ASP.NET MVC和ASP.NET 动态数据等新功能 ◆ 讨论使用WCF、MSMQ、点对点和联合进行通信 目录: 第ⅰ部分 c# 语 言 第1章 .net体系结构 3 1.1 c#与.net的关系 3 1.2 公共语言运行库 4 1.2.1 平台无关性 4 1.2.2 提高性能 4 1.2.3 语言的互操作性 5 1.3 中间语言 6 1.3.1 面向对象和接口的支持 6 1.3.2 不同的值类型和引用类型 7 1.3.3 强数据类型化 8 1.3.4 通过异常处理错误 12 1.3.5 特性的使用 13 1.4 程序集 13 1.4.1 私有程序集 14 1.4.2 共享程序集 14 1.4.3 反射 14 1.4.4 并行编程 15 1.5 .net framework类 15 1.6 名称空间 16 .1.7 用c#创建.net应用程序 16 1.7.1 创建asp.net应用程序 16 1.7.2 创建windows窗体 18 1.7.3 使用wpf 18 1.7.4 windows控件 19 1.7.5 windows服务 19 1.7.6 wcf 19 1.7.7 windows wf 19 1.8 c#在.net企业体系结构 中的作用 19 1.9 小结 21 第2章 核心c# 23 2.1 第一个c#程序 23 2.1.1 代码 24 2.1.2 编译并运行程序 24 2.1.3 详细介绍 25 2.2 变量 26 2.2.1 变量的初始化 27 2.2.2 类型推断 28 2.2.3 变量的作用域 29 2.2.4 常量 31 2.3 预定义数据类型 32 2.3.1 值类型和引用类型 32 2.3.2 cts类型 33 2.3.3 预定义的值类型 33 2.3.4 预定义的引用类型 36 2.4 流控制 38 2.4.1 条件语句 38 2.4.2 循环 42 2.4.3 跳转语句 45 2.5 枚举 46 2.6 名称空间 47 2.6.1 using语句 49 2.6.2 名称空间的别名 49 2.7 main()方法 50 2.7.1 多个main()方法 50 2.7.2 给main()方法传递参数 52 2.8 有关编译c#文件的更多内容 52 2.9 控制台i/o 54 2.10 使用注释 56 2.10.1 源文件中的内部注释 56 2.10.2 xml文档 56 2.11 c#预处理器指令 58 2.11.1 #define和 #undef 59 2.11.2 #if, #elif, #else和#endif 59 2.11.3 #warning和 # error 60 2.11.4 #region和#endregion 61 2.11.5 #line 61 2.11.6 #pragma 61 2.12 c#编程规则 62 2.12.1 关于标识符的规则 62 2.12.2 用法约定 63 2.13 小结 68 第3章 对象和类型 69 3.1 类和结构 69 3.2 类 70 3.2.1 数据成员 70 3.2.2 函数成员 71 3.2.3 只读字段 83 3.3 匿名类型 84 3.4 结构 85 3.4.1 结构是值类型 86 3.4.2 结构和继承 87 3.4.3 结构的构造函数 87 3.5 部分类 87 3.6 静态类 89 3.7 object类 89 3.7.1 system.object()方法 90 3.7.2 tostring()方法 90 3.8 扩展方法 92 3.9 小结 93 第4章 继承 95 4.1 继承的类型 95 4.1.1 实现继承和接口继承 95 4.1.2 多重继承 95 4.1.3 结构和类 96 4.2 实现继承 96 4.2.1 虚方法 97 4.2.2 隐藏方法 98 4.2.3 调用函数的基类版本 99 4.2.4 抽象类和抽象函数 100 4.2.5 密封类和密封方法 100 4.2.6 派生类的构造函数 101 4.3 修饰符 106 4.3.1 可见性修饰符 106 4.3.2 其他修饰符 106 4.4 接口 107 4.4.1 定义和实现接口 108 4.4.2 派生的接口 111 4.5 小结 113 第5章 泛型 115 5.1 概述 115 5.1.1 性能 116 5.1.2 类型安全 117 5.1.3 二进制代码的重用 117 5.1.4 代码的扩展 117 5.1.5 命名约定 118 5.2 创建泛型类 118 5.3 泛型类的功能 122 5.3.1 默认值 123 5.3.2 约束 123 5.3.3 继承 126 5.3.4 静态成员 127 5.4 泛型接口 127 5.4.1 协变和抗变 128 5.4.2 泛型接口的协变 129 5.4.3 泛型接口的抗变 130 5.5 泛型结构 131 5.6 泛型方法 134 5.6.1 泛型方法示例 134 5.6.2 带约束的泛型方法 135 5.6.3 带委托的泛型方法 136 5.6.4 泛型方法规范 137 5.7 小结 138 第6章 数组 139 6.1 简单数组 139 6.1.1 数组的声明 139 6.1.2 数组的初始化 139 6.1.3 访问数组元素 140 6.1.4 使用引用类型 141 6.2 多维数组 142 6.3 锯齿数组 143 6.4 array类 144 6.4.1 创建数组 145 6.4.2 复制数组 146 6.4.3 排序 147 6.5 数组作为参数 150 6.5.1 数组协变 151 6.5.2 arraysegment[t] 151 6.6 枚举 152 6.6.1 ienumerator接口 152 6.6.2 foreach语句 153 6.6.3 yield语句 153 6.7 元组 158 6.8 结构比较 159 6.9 小结 162 第7章 运算符和类型强制转换 163 7.1 运算符 163 7.1.1 运算符的简化操作 165 7.1.2 运算符的优先级 169 7.2 类型的安全性 169 7.2.1 类型转换 170 7.2.2 装箱和拆箱 173 7.3 比较对象的相等性 174 7.3.1 比较引用类型的相等性 174 7.3.2 比较值类型的相等性 175 7.4 运算符重载 176 7.4.1 运算符的工作方式 177 7.4.2 运算符重载的示例: vector结构 178 7.5 用户定义的类型强制转换 185 7.5.1 实现用户定义的类型 强制转换 186 7.5.2 多重类型强制转换 192 7.6 小结 195 第8章 委托、lambda表达式 和事件 197 8.1 委托 197 8.1.1 声明委托 198 8.1.2 使用委托 199 8.1.3 简单的委托示例 202 8.1.4 action[t]和func[t] 委托 204 8.1.5 bubblesorter示例 204 8.1.6 多播委托 207 8.1.7 匿名方法 210 8.2 lambda表达式 211 8.2.1 参数 212 8.2.2 多行代码 212 8.2.3 lambda表达式外部的 变量 213 8.3 事件 214 8.3.1 事件发布程序 214 8.3.2 事件侦听器 216 8.3.3 弱事件 217 8.4 小结 220 第9章 字符串和正则表达式 221 9.1 system.string类 221 9.1.1 创建字符串 222 9.1.2 stringbuilder成员 225 9.1.3 格式字符串 226 9.2 正则表达式 231 9.2.1 正则表达式概述 232 9.2.2 regularexpressions playaround示例 233 9.2.3 显示结果 235 9.2.4 匹配、组合和捕获 237 9.3 小结 238 第10章 集合 239 10.1 集合接口和类型 239 10.2 列表 240 10.2.1 创建列表 241 10.2.2 只读集合 250 10.3 队列 250 10.4 栈 254 10.5 链表 256 10.6 有序列表 261 10.7 字典 262 10.7.1 键的类型 263 10.7.2 字典示例 264 10.7.3 lookup类 268 10.7.4 有序字典 269 10.8 集 269 10.9 可观察的集合 271 10.10 位数组 272 10.10.1 bitarray类 273 10.10.2 bitvector32结构 275 10.11 并发集合 277 10.12 性能 279 10.13 小结 281 第11章 linq 283 11.1 linq概述 283 11.1.1 列表和实体 283 11.1.2 linq查询 287 11.1.3 扩展方法 288 11.1.4 推迟查询的执行 289 11.2 标准的查询操作符 291 11.2.1 筛选 293 11.2.2 用索引筛选 293 11.2.3 类型筛选 294 11.2.4 复合的from子句 294 11.2.5 排序 295 11.2.6 分组 296 11.2.7 对嵌套的对象分组 297 11.2.8 连接 298 11.2.9 集合操作 300 11.2.10 合并 301 11.2.11 分区 302 11.2.12 聚合操作符 303 11.2.13 转换 304 11.2.14 生成操作符 305 11.3 并行linq 306 11.3.1 并行查询 306 11.3.2 分区器 307 11.3.3 取消 307 11.4 表达式树 308 11.5 linq提供程序 311 11.6 小结 311 第12章 动态语言扩展 313 12.1 dlr 313 12.2 dynamic类型 313 12.3 包含dlr scriptruntime 318 12.4 dynamicobject和 expandoobject 321 12.4.1 dynamicobject 321 12.4.2 expandoobject 323 12.5 小结 324 第13章 内存管理和指针 325 13.1 后台内存管理 325 13.1.1 值数据类型 325 13.1.2 引用数据类型 327 13.1.3 垃圾回收 328 13.2 释放非托管的资源 330 13.2.1 析构函数 330 13.2.2 idisposable接口 331 13.2.3 实现idisposable接口 和析构函数 332 13.3 不安全的代码 334 13.3.1 用指针直接访问内存 334 13.3.2 指针示例: pointerplayground 343 13.3.3 使用指针优化性能 347 13.4 小结 350 第14章 反射 351 14.1 自定义特性 351 14.1.1 编写自定义特性 352 14.1.2 自定义特性示例: whatsnewattributes 355 14.2 反射 358 14.2.1 system.type类 358 14.2.2 typeview示例 360 14.2.3 assembly类 362 14.2.4 完成whatsnew attributes示例 364 14.3 小结 368 第15章 错误和异常 369 15.1 异常类 369 15.2 捕获异常 371 15.2.1 实现多个catch块 373 15.2.2 在其他代码中捕获异常 376 15.2.3 system.exception属性 376 15.2.4 没有处理异常时所发生 的情况 377 15.2.5 嵌套的 try块 378 15.3 用户定义的异常类 379 15.3.1 捕获用户定义的异常 380 15.3.2 抛出用户定义的异常 382 15.3.3 定义用户定义的异常类 385 15.4 小结 387 第ⅱ部分 visual studio 第16章 visual studio 2010 391 16.1 使用visual studio 2010 391 16.1.1 创建项目 395 16.1.2 解决方案和项目的区别 401 16.1.3 windows应用程序代码 403 16.1.4 项目的浏览和编码 404 16.1.5 生成项目 411 16.1.6 调试代码 415 16.2 重构工具 418 16.3 面向多个版本的 .net framework 420 16.4 wpf、wcf、wf等 421 16.4.1 在visual studio 2010 中构建wpf应用程序 421 16.4.2 在visual studio 2010 中构建wf应用程序 423 16.5 小结 424 第17章 部署 425 17.1 部署的规划 425 17.1.1 部署选项 426 17.1.2 部署要求 426 17.1.3 部署.net运行库 427 17.2 简单的部署选项 427 17.2.1 xcopy部署 428 17.2.2 xcopy和web 应用程序 428 17.2.3 发布web站点 429 17.3 visual studio 2010安装 和部署项目 429 17.3.1 windows installer 430 17.3.2 创建安装程序 430 17.4 clickonce 437 17.4.1 clickonce操作 437 17.4.2 发布clickonce 应用程序 438 17.4.3 clickonce设置 438 17.4.4 clickonce文件的 应用程序缓存 439 17.4.5 应用程序的安全性 439 17.5 visual studio 2010 高级选项 440 17.5.1 文件系统编辑器 440 17.5.2 注册表编辑器 440 17.5.3 文件类型编辑器 440 17.5.4 用户界面编辑器 441 17.5.5 自定义动作编辑器 442 17.5.6 launch conditions 编辑器 443 17.6 小结 444 第ⅲ部分 基 础 第18章 程序集 447 18.1 程序集的含义 447 18.1.1 程序集的功能 448 18.1.2 程序集的结构 448 18.1.3 程序集清单 449 18.1.4 名称空间、程序集 和组件 449 18.1.5 私有程序集和共享 程序集 449 18.1.6 附属程序集 450 18.1.7 查看程序集 450 18.2 创建程序集 451 18.2.1 创建模块和程序集 451 18.2.2 程序集的特性 452 18.2.3 动态加载和创建 程序集 454 18.3 应用程序域 457 18.4 共享程序集 461 18.4.1 强名 462 18.4.2 使用强名获得完整性 462 18.4.3 全局程序集缓存 463 18.4.4 创建共享程序集 463 18.4.5 创建强名 464 18.4.6 安装共享程序集 465 18.4.7 使用共享程序集 465 18.4.8 程序集的延迟签名 466 18.4.9 引用 467 18.4.10 本机映像生成器 468 18.5 配置.net应用程序 469 18.5.1 配置类别 469 18.5.2 绑定程序集 470 18.6 版本问题 471 18.6.1 版本号 472 18.6.2 通过编程方式获取版本 472 18.6.3 绑定到程序集版本 473 18.6.4 发行者策略文件 474 18.6.5 运行库的版本 475 18.7 小结 476 第19章 检测 477 19.1 代码协定 477 19.1.1 前提条件 479 19.1.2 后置条件 480 19.1.3 常量 481 19.1.4 接口的协定 481 19.2 跟踪 483 19.2.1 跟踪源 484 19.2.2 跟踪开关 485 19.2.3 跟踪侦听器 486 19.2.4 筛选器 488 19.2.5 相关性 489 19.3 事件日志 492 19.3.1 事件日志体系结构 493 19.3.2 事件日志类 494 19.3.3 创建事件源 494 19.3.4 写入事件日志 495 19.3.5 资源文件 496 19.4 性能监控 500 19.4.1 性能监控类 500 19.4.2 性能计数器生成器 500 19.4.3 添加performance counter组件 503 19.4.4 perfmon.exe 505 19.5 小结 506 第20章 线程、任务和同步 507 20.1 概述 507 20.2 异步委托 508 20.2.1 投票 508 20.2.2 等待句柄 509 20.2.3 异步回调 510 20.3 thread类 512 20.3.1 给线程传递数据 513 20.3.2 后台线程 514 20.3.3 线程的优先级 515 20.3.4 控制线程 515 20.4 线程池 516 20.5 任务 517 20.5.1 启动任务 517 20.5.2 连续的任务 518 20.5.3 任务层次结构 519 20.5.4 任务的结果 520 20.6 parallel类 521 20.6.1 用parallel.for() 方法循环 521 20.6.2 使用parallel.foreach() 方法循环 523 20.6.3 通过parallel.invoke() 方法调用多个方法 524 20.7 取消架构 524 20.7.1 parallel.for()方法 的取消 524 20.7.2 任务的取消 526 20.8 线程问题 527 20.8.1 争用条件 527 20.8.2 死锁 530 20.9 同步 532 20.9.1 lock语句和线程安全 532 20.9.2 interlocked类 538 20.9.3 monitor类 539 20.9.4 spinlock结构 540 20.9.5 waithandle基类 540 20.9.6 mutex类 541 20.9.7 semaphore类 542 20.9.8 events类 544 20.9.9 barrier类 547 20.9.10 readerwriterlockslim 类 549 20.10 timer类 552 20.11 基于事件的异步模式 554 20.11.1 backgroundworker 类 554 20.11.2 启用取消功能 557 20.11.3 启用进度功能 558 20.11.4 创建基于事件的异步 组件 559 20.12 小结 563 第21章 安全性 565 21.1 身份验证和授权 565 21.1.1 标识和principal 565 21.1.2 角色 567 21.1.3 声明基于角色的安全性 567 21.1.4 客户端应用程序服务 568 21.2 加密 573 21.2.1 签名 575 21.2.2 交换密钥和安全传输 576 21.3 资源的访问控制 579 21.4 代码访问安全性 582 21.4.1 第2级安全透明性 582 21.4.2 权限 583 21.5 使用证书发布代码 588 21.6 小结 588 第22章 本地化 591 22.1 system.globalization 名称空间 591 22.1.1 unicode问题 592 22.1.2 区域性和区域 592 22.1.3 使用区域性 596 22.1.4 排序 600 22.2 资源 602 22.2.1 创建资源文件 602 22.2.2 资源文件生成器 602 22.2.3 resourcewriter 603 22.2.4 使用资源文件 604 22.2.5 system.resources 名称空间 607 22.3 使用visual studio的 windows窗体本地化 607 22.3.1 通过编程方式修改 区域性 612 22.3.2 使用自定义资源文件 613 22.3.3 资源的自动回退 614 22.3.4 外包翻译 615 22.4 用asp.net本地化 615 22.5 用wpf本地化 617 22.5.1 用于wpf的.net资源 618 22.5.2 xaml资源字典 619 22.6 自定义资源读取器 622 22.6.1 创建databaseresource reader类 623 22.6.2 创建databaseresource set类 625 22.6.3 创建databaseresource manager类 625 22.6.4 databaseresourcereader 的客户端应用程序 626 22.7 创建自定义区域性 626 22.8 小结 628 第23章 system.transactions 629 23.1 概述 629 23.1.1 事务处理阶段 630 23.1.2 acid属性 630 23.2 数据库和实体类 631 23.3 传统的事务 633 23.3.1 ado.net事务 633 23.3.2 system.enterprise services 634 23.4 system.transactions 635 23.4.1 可提交的事务 636 23.4.2 事务处理的升级 638 23.4.3 依赖事务 640 23.4.4 环境事务 642 23.5 隔离级别 649 23.6 自定义资源管理器 650 23.7 windows 7和windows server 2008的事务 656 23.8 小结 660 第24章 网络 661 24.1 webclient类 661 24.1.1 下载文件 662 24.1.2 基本的webclient示例 662 24.1.3 上传文件 663 24.2 webrequest类和 webresponse类 664 24.2.1 身份验证 666 24.2.2 使用代理 666 24.2.3 异步页面请求 666 24.3 把输出结果显示为 html页面 667 24.3.1 从应用程序中进行 简单的web浏览 667 24.3.2 启动internet explorer 实例 669 24.3.3 给应用程序提供更多 的ie类型特性 669 24.3.4 使用webbrowser控件 打印 674 24.3.5 显示请求页面的代码 674 24.3.6 webrequest类 和webresponse类的 层次结构 676 24.4 实用工具类 676 24.4.1 uri 676 24.4.2 ip地址和dns名称 677 24.5 较低层的协议 679 24.5.1 使用smtpclient 680 24.5.2 使用tcp类 682 24.5.3 tcpsend和tcpreceive 示例 682 24.5.4 tcp和udp 684 24.5.5 udp类 684 24.5.6 socket类 685 24.6 小结 689 第25章 windows服务 691 25.1 windows服务 691 25.2 windows服务的体系结构 692 25.2.1 服务程序 692 25.2.2 服务控制程序 694 25.2.3 服务配置程序 694 25.2.4 windows服务的类 694 25.3 创建windows服务程序 694 25.3.1 创建服务的核心功能 695 25.3.2 quoteclient示例 698 25.3.3 windows服务程序 699 25.3.4 线程和服务 703 25.3.5 服务的安装 704 25.3.6 安装程序 704 25.4 服务的监视和控制 708 25.4.1 mmc管理单元 708 25.4.2 net.exe实用程序 709 25.4.3 sc.exe实用程序 710 25.4.4 visual studio server explorer 710 25.4.5 编写自定义 servicecontroller类 710 25.5 故障排除和事件日志 718 25.6 小结 719 第26章 互操作性 721 26.1 .net和com 721 26.1.1 元数据 722 26.1.2 释放内存 722 26.1.3 接口 722 26.1.4 方法的绑定 724 26.1.5 数据类型 724 26.1.6 注册 724 26.1.7 线程 725 26.1.8 错误处理 726 26.1.9 事件 727 26.2 编组 727 26.3 从.net客户端中使用 com组件 728 26.3.1 创建com组件 728 26.3.2 创建rcw 734 26.3.3 使用rcw 735 26.3.4 使用com服务器和 动态语言扩展 736 26.3.5 线程问题 737 26.3.6 添加连接点 737 26.4 从com客户端中使用 .net组件 739 26.4.1 ccm 740 26.4.2 创建.net组件 740 26.4.3 创建类型库 741 26.4.4 com互操作特性 743 26.4.5 com注册 745 26.4.6 创建com客户端 应用程序 746 26.4.7 添加连接点 747 26.4.8 用sink对象创建 客户端 748 26.5 平台调用 750 26.6 小结 754 第27章 核心xaml 755 27.1 概述 755 27.1.1 元素映射到.net 对象上 756 27.1.2 使用自定义.net类 757 27.1.3 把特性用作属性 759 27.1.4 把特性用作元素 759 27.1.5 基本的.net类型 760 27.1.6 集合 760 27.1.7 构造函数 761 27.2 依赖属性 761 27.2.1 创建依赖类型 762 27.2.2 强制值回调 763 27.2.3 值变更回调和事件 764 27.2.4 事件的冒泡和隧道 764 27.3 附加属性 767 27.4 标记扩展 770 27.5 创建自定义标记扩展 770 27.6 xaml定义的标记扩展 772 27.7 读写xaml 772 27.8 小结 773 第28章 managed extensibility framework 775 28.1 mef的体系结构 775 28.2 协定 782 28.3 导出 783 28.3.1 导出属性和方法 787 28.3.2 导出元数据 789 28.4 导入 791 28.5 容器和出口提供程序 794 28.6 类别 797 28.7 小结 798 第29章 文件和注册表操作 799 29.1 管理文件系统 799 29.1.1 表示文件和文件夹 的.net类 800 29.1.2 path类 803 29.1.3 fileproperties示例 803 29.2 移动、复制和删除文件 808 29.2.1 filepropertiesandmovement 示例 808 29.2.2 filepropertiesandmovement 示例的代码 809 29.3 读写文件 812 29.3.1 读取文件 812 29.3.2 写入文件 814 29.3.3 流 815 29.3.4 缓存的流 816 29.3.5 使用filestream类读写 二进制文件 816 29.3.6 读写文本文件 821 29.4 映射内存的文件 827 29.5 读取驱动器信息 829 29.6 文件的安全性 831 29.6.1 从文件中读取acl 831 29.6.2 从目录中读取acl 832 29.6.3 添加和删除文件中 的acl项 833 29.7 读写注册表 835 29.7.1 注册表 835 29.7.2 .net注册表类 837 29.8 读写独立存储器 839 29.9 小结 844 第ⅳ部分 数 据 第30章 核心ado.net 847 30.1 ado.net概述 847 30.1.1 名称空间 848 30.1.2 共享类 848 30.1.3 数据库专用的类 849 30.2 使用数据库连接 850 30.2.1 管理连接字符串 851 30.2.2 高效地使用连接 852 30.2.3 事务 854 30.3 命令 855 30.3.1 执行命令 856 30.3.2 调用存储过程 860 30.4 快速数据访问: 数据读取器 862 30.5 管理数据和关系: dataset类 865 30.5.1 数据表 866 30.5.2 数据列 866 30.5.3 数据关系 871 30.5.4 数据约束 872 30.6 xml架构:用xsd 生成代码 875 30.7 填充dataset类 881 30.7.1 用数据适配器填充 dataset 882 30.7.2 从xml中填充 dataset类 883 30.8 持久化dataset类的修改 883 30.8.1 通过数据适配器进行 更新 883 30.8.2 写入xml输出结果 886 30.9 使用ado.net 887 30.9.1 分层开发 887 30.9.2 生成sql server的键 888 30.9.3 命名约定 891 30.10 小结 892 第31章 ado.net entity framework 893 31.1 ado.net entity framework概述 893 31.2 entity framework映射 894 31.2.1 逻辑层 895 31.2.2 概念层 897 31.2.3 映射层 898 31.3 entity client 899 31.3.1 连接字符串 900 31.3.2 entity sql 900 31.4 实体 901 31.5 对象上下文 904 31.6 关系 906 31.6.1 一个层次结构一个表 907 31.6.2 一种类型一个表 908 31.6.3 懒惰加载、延迟加载 和预先加载 909 31.7 对象查询 910 31.8 更新 913 31.8.1 对象跟踪 913 31.8.2 改变信息 914 31.8.3 附加和分离实体 916 31.8.4 存储实体的变化 916 31.9 linq to entities 917 31.10 小结 918 第32章 数据服务 919 32.1 概述 919 32.2 包含clr对象的自定义 宿主 920 32.2.1 clr对象 920 32.2.2 数据模型 922 32.2.3 数据服务 923 32.2.4 驻留服务 923 32.2.5 其他服务操作 924 32.3 http客户端应用程序 925 32.4 使用wcf数据服务和 ado.net entity framework 929 32.4.1 asp.net宿主和edm 929 32.4.2 使用system.data .service.client的.net 应用程序 931 32.5 小结 938 第33章 处理xml 939 33.1 .net支持的xml标准 940 33.2 system.xml名称空间 940 33.3 使用system.xml类 941 33.4 读写流格式的xml 942 33.4.1 使用 xmlreader类 942 33.4.2 使用xmlreader类进行 验证 946 33.4.3 使用xmlwriter类 947 33.5 在.net中使用dom 949 33.6 使用xpathnavigator类 954 33.6.1 system.xml.xpath 名称空间 954 33.6.2 system.xml.xsl 名称空间 959 33.6.3 调试xslt 963 33.7 xml和ado.net 965 33.7.1 将ado.net数据 转换为xml文档 965 33.7.2 把xml文档转换为 ado.net数据 970 33.8 在xml中序列化对象 972 33.9 linq to xml和.net 982 33.10 使用不同的xml对象 982 33.10.1 xdocument对象 982 33.10.2 xelement对象 983 33.10.3 xnamespace对象 984 33.10.4 xcomment对象 986 33.10.5 xattribute对象 986 33.11 使用linq查询xml 文档 987 33.11.1 查询静态的xml 文档 987 33.11.2 查询动态的xml 文档 989 33.12 xml文档的更多查询 技术 990 33.12.1 读取xml文档 990 33.12.2 写入xml文档 992 33.13 小结 993 第34章 .net编程和sql server 995 34.1 .net运行库的宿主 995 34.2 microsoft.sqlserver.server 997 34.3 用户定义的类型 998 34.3.1 创建udt 998 34.3.2 通过sql使用udt 1003 34.3.3 从客户端代码中使用 udt 1004 34.4 用户定义的聚合函数 1005 34.4.1 创建用户定义的 聚合函数 1006 34.4.2 使用用户定义的 聚合函数 1007 34.5 存储过程 1007 34.5.1 创建存储过程 1008 34.5.2 使用存储过程 1009 34.6 用户定义的函数 1010 34.6.1 创建用户定义的函数 1010 34.6.2 使用用户定义的函数 1010 34.7 触发器 1011 34.7.1 创建触发器 1011 34.7.2 使用触发器 1012 34.8 xml数据类型 1013 34.8.1 包含xml数据的表 1013 34.8.2 读取xml值 1014 34.8.3 数据的查询 1017 34.8.4 xml数据修改语言 (xml dml) 1019 34.8.5 xml索引 1020 34.8.6 强类型化的xml 1021 34.9 小结 1022 第ⅴ部分 显 示 第35章 核心wpf 1025 35.1 概述 1025 35.1.1 名称空间 1025 35.1.2 类层次结构 1027 35.2 形状 1028 35.3 几何图形 1030 35.4 变换 1032 35.5 画笔 1033 35.5.1 solidcolorbrush 1033 35.5.2 lineargradientbrush 1034 35.5.3 radialgradientbrush 1034 35.5.4 drawingbrush 1035 35.5.5 imagebrush 1035 35.5.6 visualbrush 1036 35.6 控件 1037 35.6.1 简单控件 1037 35.6.2 内容控件 1038 35.6.3 带标题的内容控件 1039 35.6.4 项控件 1040 35.6.5 带标题的项控件 1041 35.6.6 修饰 1041 35.7 布局 1042 35.7.1 stackpanel 1042 35.7.2 wrappanel 1043 35.7.3 canvas 1044 35.7.4 dockpanel 1044 35.7.5 grid 1045 35.8 样式和资源 1046 35.8.1 样式 1046 35.8.2 资源 1048 35.8.3 系统资源 1049 35.8.4 从代码中访问资源 1050 35.8.5 动态资源 1050 35.8.6 资源字典 1051 35.9 触发器 1052 35.9.1 属性触发器 1053 35.9.2 多触发器 1054 35.9.3 数据触发器 1055 35.10 模板 1056 35.10.1 控件模板 1057 35.10.2 数据模板 1060 35.10.3 样式化列表框 1061 35.10.4 itemtemplate 1062 35.10.5 列表框元素的控件 模板 1064 35.11 动画 1066 35.11.1 时间轴 1066 35.11.2 非线性动画 1069 35.11.3 事件触发器 1069 35.11.4 关键帧动画 1072 35.12 可见状态管理器 1073 35.13 3-d 1076 35.13.1 模型 1077 35.13.2 照相机 1079 35.13.3 光线 1079 35.13.4 旋转 1079 35.14 小结 1080 第36章 用wpf编写业务 应用程序 1083 36.1 数据绑定 1083 36.1.1 booksdemo应用程序 1084 36.1.2 用xaml绑定 1086 36.1.3 简单对象的绑定 1088 36.1.4 更改通知 1090 36.1.5 对象数据提供程序 1092 36.1.6 列表绑定 1094 36.1.7 主从绑定 1096 36.1.8 多绑定 1097 36.1.9 优先绑定 1099 36.1.10 值的转换 1100 36.1.11 动态添加列表项 1102 36.1.12 数据模板选择器 1103 36.1.13 绑定到xml上 1105 36.1.14 绑定的验证 1107 36.2 commanding 1111 36.2.1 定义命令 1112 36.2.2 定义命令源 1113 36.2.3 命令绑定 1113 36.3 treeview 1114 36.4 datagrid 1118 36.4.1 自定义列 1120 36.4.2 行的细节 1121 36.4.3 用datagrid进行分组 1121 36.5 小结 1124 第37章 用wpf创建文档 1125 37.1 文本元素 1125 37.1.1 字体 1125 37.1.2 texteffect 1127 37.1.3 内联 1128 37.1.4 块 1130 37.1.5 列表 1132 37.1.6 表 1132 37.1.7 块的锚定 1134 37.2 流文档 1135 37.3 固定文档 1136 37.4 xps文档 1140 37.5 打印 1141 37.5.1 用printdialog打印 1142 37.5.2 打印可见元素 1142 37.6 小结 1144 第38章 silverlight 1145 38.1 wpf和silverlight的比较 1145 38.2 创建silverlight项目 1146 38.3 导航 1148 38.4 网络 1152 38.4.1 创建ado.net entity data model 1153 38.4.2 为silverlight客户端 创建wcf服务 1153 38.4.3 调用wcf服务 1155 38.4.4 使用wcf数据服务 1158 38.4.5 使用system.net访问 服务 1160 38.5 浏览器集成 1162 38.5.1 调用javascript 1162 38.5.2 javascript调用 silverlight 1163 38.6 在浏览器外运行的 silverlight应用程序 1164 38.7 小结 1167 第39章 windows窗体 1169 39.1 创建windows窗体 应用程序 1169 39.2 control类 1175 39.2.1 大小和位置 1175 39.2.2 外观 1176 39.2.3 用户交互操作 1176 39.2.4 windows功能 1177 39.2.5 其他功能 1177 39.3 标准控件和组件 1178 39.3.1 button控件 1178 39.3.2 checkbox控件 1178 39.3.3 radiobutton控件 1179 39.3.4 combobox控件、 listbox控件和 checkedlistbox控件 1179 39.3.5 datagridview控件 1180 39.3.6 datetimepicker控件 1188 39.3.7 errorprovider组件 1188 39.3.8 imagelist组件 1189 39.3.9 label控件 1189 39.3.10 listview控件 1189 39.3.11 picturebox控件 1189 39.3.12 progressbar控件 1190 39.3.13 textbox控件、 richtextbox控件与 maskedtextbox控件 1190 39.3.14 panel控件 1191 39.3.15 flowlayoutpanel和 tablelayoutpanel 控件 1191 39.3.16 splitcontainer控件 1192 39.3.17 tabcontrol控件和 tabpages控件 1192 39.3.18 toolstrip控件 1193 39.3.19 menustrip控件 1194 39.3.20 contextmenustrip 控件 1194 39.3.21 toolstripmenuitem 控件 1194 39.3.22 toolstripmanager类 1194 39.3.23 toolstripcontainer 控件 1195 39.4 窗体 1195 39.4.1 form类 1195 39.4.2 多文档界面 1199 39.4.3 创建自己的用户控件 1200 39.5 小结 1200 第40章 核心asp.net 1201 40.1 asp.net概述 1201 40.1.1 asp.net文件的 处理方式 1202 40.1.2 web站点和web 应用程序 1202 40.1.3 asp.net中的状态 管理 1203 40.2 asp.net web窗体 1203 40.2.1 asp.net代码模型 1207 40.2.2 asp.net服务器控件 1208 40.3 ado.net和数据绑定 1222 40.3.1 更新事件登记 应用程序 1222 40.3.2 数据绑定的更多内容 1229 40.4 应用程序配置 1234 40.5 小结 1236 第41章 asp.net的功能 1237 41.1 用户控件和自定义控件 1238 41.1.1 用户控件 1238 41.1.2 pcsdemosite中的 用户控件 1242 41.1.3 自定义控件 1243 41.2 母版页 1247 41.2.1 在web页面中 访问母版页 1248 41.2.2 嵌套的母版页 1248 41.2.3 pcsdemosite中 的母版页 1249 41.3 站点导航 1250 41.3.1 添加站点地图文件 1251 41.3.2 pcsdemosite中 的导航 1252 41.4 安全性 1253 41.4.1 使用security setup 添加forms身份验证 功能 1254 41.4.2 实现登录系统 1255 41.4.3 web 登录服务器控件 1255 41.4.4 保护目录 1256 41.4.5 pcsdemosite中的 安全性 1257 41.5 主题 1259 41.5.1 把主题应用于页面 1259 41.5.2 定义主题 1260 41.5.3 pcsdemosite中的 主题 1260 41.6 web部件 1263 41.6.1 web部件应用程序 组件 1263 41.6.2 web部件示例 1264 41.7 asp.net ajax 1270 41.8 ajax的概念 1271 41.9 asp.net ajax 1273 41.9.1 核心功能 1273 41.9.2 asp.net ajax control toolkit 1275 41.10 asp.net ajax网站 示例 1276 41.11 支持asp.net ajax的 网站配置 1278 41.12 添加asp.net ajax 功能 1279 41.12.1 scriptmanager控件 1280 41.12.2 使用updatepanel 控件 1281 41.12.3 使用updateprogress 1283 41.12.4 使用扩展控件 1284 41.13 使用ajax库 1286 41.13.1 给web页面添加 javascript 1286 41.13.2 全局实用程序函数 1287 41.13.3 使用ajax库 javascript oop 扩展 1287 41.13.4 pagerequestmanager 对象和application 对象 1289 41.13.5 javascript的调试 1292 41.13.6 异步调用web方法 1293 41.13.7 asp.net应用程序 服务 1294 41.14 小结 1294 第42章 asp.net动态数据 和mvc 1297 42.1 路由 1298 42.1.1 查询字符串参数 1298 42.1.2 定义路由 1300 42.1.3 使用路由参数 1303 42.2 动态数据 1305 42.2.1 创建动态数据网站 1305 42.2.2 定制动态数据网站 1310 42.2.3 进一步开发 1314 42.3 mvc 1314 42.3.1 mvc的含义 1314 42.3.2 asp.net mvc的 含义 1315 42.3.3 简单的asp.net mvc 应用程序 1315 42.3.4 定制asp.net mvc 应用程序 1321 42.3.5 进一步开发 1329 42.4 小结 1330 第ⅵ部分 通 信 第43章 wcf 1333 43.1 wcf概述 1333 43.1.1 soap 1335 43.1.2 wsdl 1335 43.1.3 rest 1335 43.1.4 json 1336 43.2 简单的服务和客户端 1336 43.2.1 服务协定 1337 43.2.2 服务的实现 1338 43.2.3 wcf服务宿主和 wcf测试客户端 1338 43.2.4 自定义服务宿主 1340 43.2.5 wcf客户端 1342 43.2.6 诊断 1343 43.3 协定 1345 43.3.1 数据协定 1345 43.3.2 版本问题 1346 43.3.3 服务协定 1346 43.3.4 消息协定 1347 43.4 服务的实现 1348 43.4.1 以编程方式创建 客户端 1351 43.4.2 错误处理 1352 43.5 绑定 1353 43.6 宿主 1356 43.6.1 自定义宿主 1356 43.6.2 was宿主 1357 43.6.3 预配置的宿主类 1357 43.7 客户端 1358 43.8 双工通信 1360 43.9 小结 1362 第44章 windows wf 4 1363 44.1 hello world示例 1363 44.2 活动 1365 44.2.1 if活动 1366 44.2.2 invokemethod活动 1367 44.2.3 parallel活动 1367 44.2.4 delay活动 1368 44.2.5 pick活动 1368 44.3 自定义活动 1369 44.3.1 活动的验证 1370 44.3.2 设计器 1371 44.3.3 自定义复合活动 1373 44.4 工作流 1375 44.4.1 实参和变量 1376 44.4.2 workflowapplication 1377 44.4.3 workflowservicehost 1381 44.4.4 驻留设计器 1386 44.5 小结 1391 第45章 对等网络 1393 45.1 p2p网络概述 1393 45.1.1 客户端-服务器体系 结构 1393 45.1.2 p2p体系结构 1394 45.1.3 p2p体系结构的挑战 1395 45.1.4 p2p术语 1396 45.1.5 p2p解决方案 1396 45.2 microsoft windows peer-to-peer networking 1396 45.2.1 pnrp 1396 45.2.2 people near me 1399 45.3 构建p2p应用程序 1400 45.3.1 system.net.peertopeer 1400 45.3.2 system.net.peertopeer .collaboration 1405 45.4 小结 1408 第46章 消息队列 1409 46.1 概述 1409 46.1.1 使用消息队列的场合 1410 46.1.2 消息队列功能 1411 46.2 message queuing产品 1412 46.3 消息队列体系结构 1412 46.3.1 消息 1413 46.3.2 消息队列 1413 46.4 message queuing 管理工具 1414 46.4.1 创建消息队列 1414 46.4.2 消息队列属性 1415 46.5 消息队列的编程实现 1415 46.5.1 创建消息队列 1415 46.5.2 查找队列 1416 46.5.3 打开已知队列 1417 46.5.4 发送消息 1418 46.5.5 接收消息 1421 46.6 课程订单应用程序 1423 46.6.1 课程订单类库 1423 46.6.2 课程订单消息 发送程序 1424 46.6.3 发送优先级和可恢复 的消息 1425 46.6.4 课程订单消息接收 程序 1426 46.7 接收结果 1429 46.7.1 确认队列 1430 46.7.2 响应队列 1430 46.8 事务队列 1431 46.9 消息队列和wcf 1432 46.9.1 带数据协定的实体类 1432 46.9.2 wcf服务协定 1433 46.9.3 wcf消息接收 应用程序 1434 46.9.4 wcf消息发送 应用程序 1437 46.10 消息队列的安装 1438 46.11 小结 1438 第47章 syndication 1441 47.1 system.servicemodel. syndication名称空间 概述 1441 47.2 读取联合源的示例 1442 47.3 联合源的示例 1444 47.4 小结 1449 第ⅶ部分 附 录 附录a 1453 ***以下内容见随书附赠光盘*** 第48章 使用gdi+绘图 e1 48.1 理解绘图规则 e1 48.1.1 gdi和gdi+ e2 48.1.2 绘制图形 e3 48.1.3 使用onpaint()方法 绘制图形 e6 48.1.4 使用剪切区域 e7 48.2 测量坐标和区域 e9 48.2.1 point和pointf结构 e9 48.2.2 size和sizef结构 e10 48.2.3 rectangle和rectanglef 结构 e11 48.2.4 region e12 48.3 调试须知 e13 48.4 绘制可滚动的窗口 e14 48.5 世界、页面和设备坐标 e18 48.6 颜色 e19 48.6.1 rgb值 e19 48.6.2 命名颜色 e20 48.6.3 图形显示模式和安全 的调色板 e20 48.6.4 安全调色板 e21 48.7 画笔和钢笔 e21 48.7.1 画笔 e22 48.7.2 钢笔 e23 48.8 绘制图形和线条 e23 48.9 显示图像 e25 48.10 处理图像时的问题 e27 48.11 绘制文本 e28 48.12 简单的文本示例 e29 48.13 字体和字体系列 e30 48.14 示例:枚举字体系列 e31 48.15 编辑文本文档: capseditor示例 e33 48.15.1 invalidate()方法 e37 48.15.2 计算项的大小和文档 的大小 e38 48.15.3 onpaint()方法 e39 48.15.4 坐标转换 e41 48.15.5 响应用户的输入 e42 48.16 打印 e45 48.17 小结 e50 第49章 vsto e51 49.1 vsto概述 e51 49.1.1 项目类型 e52 49.1.2 项目功能 e54 49.2 vsto项目基础 e55 49.2.1 office对象模型 e55 49.2.2 vsto名称空间 e55 49.2.3 宿主项和宿主控件 e56 49.2.4 基本的vsto项目 结构 e57 49.2.5 globals类 e60 49.2.6 事件处理 e60 49.3 构建vsto解决方案 e61 49.3.1 管理应用程序级插件 e62 49.3.2 与应用程序和文档 交互操作 e63 49.3.3 ui的自定义 e64 49.4 示例应用程序 e68 49.5 小结 e78 第50章 maf e79 50.1 maf体系结构 e79 50.1.1 管道 e80 50.1.2 发现 e81 50.1.3 激活和隔离 e82 50.1.4 协定 e83 50.1.5 生命周期 e84 50.1.6 版本问题 e85 50.2 插件示例 e86 50.2.1 插件协定 e86 50.2.2 计算器插件视图 e87 50.2.3 计算器插件适配器 e88 50.2.4 计算器插件 e90 50.2.5 计算器宿主视图 e91 50.2.6 计算机宿主适配器 e91 50.2.7 计算器宿主 e93 50.2.8 其他插件 e97 50.3 小结 e97 第51章 enterprise services e99 51.1 使用enterprise services e99 51.1.1 简史 e100 51.1.2 使用enterprise services 的场合 e100 51.1.3 重要功能 e101 51.2 创建简单的com+应用 程序 e103 51.2.1 servicedcomponent类 e103 51.2.2 程序集的属性 e103 51.2.3 创建组件 e104 51.3 部署 e106 51.3.1 自动部署 e106 51.3.2 手工部署 e106 51.3.3 创建安装软件包 e106 51.4 组件服务管理器 e107 51.5 客户端应用程序 e108 51.6 事务 e109 51.6.1 事务的特性 e109 51.6.2 事务的结果 e110 51.7 示例应用程序 e111 51.7.1 实体类 e111 51.7.2 ordercontrol组件 e113 51.7.3 orderdata组件 e114 51.7.4 orderlinedata组件 e116 51.7.5 客户端应用程序 e117 51.8 集成wcf和enterprise services e118 51.8.1 wcf服务外观 e118 51.8.2 客户端应用程序 e122 51.9 小结 e123 第52章 目录服务 e125 52.1 active directory的 体系结构 e126 52.1.1 active directory的 功能 e126 52.1.2 active directory的 概念 e126 52.1.3 active directory数据 的特征 e129 52.1.4 指定架构 e130 52.2 active directory的 管理工具 e131 52.2.1 active directory users and computers工具 e131 52.2.2 adsi edit工具 e132 52.3 active directory编程 e133 52.3.1 system.directoryservices 名称空间中的类 e134 52.3.2 绑定到directory services e134 52.3.3 获取目录项 e138 52.3.4 对象集合 e140 52.3.5 缓存 e141 52.3.6 创建新对象 e141 52.3.7 更新目录项 e142 52.3.8 访问本地adsi对象 e143 52.3.9 在active directory 中搜索 e144 52.4 搜索用户对象 e148 52.4.1 用户界面 e148 52.4.2 获取架构命名上下文 e149 52.4.3 获取user类的属性名 e149 52.4.4 搜索用户对象 e150 52.5 账户管理 e152 52.5.1 显示用户信息 e152 52.5.2 创建用户 e153 52.5.3 重置密码 e153 52.5.4 创建组 e154 52.5.5 在组中添加用户 e154 52.5.6 查找用户 e154 52.6 dsml e155 52.6.1 system.directoryservices. protocols名称空间中 的类 e156 52.6.2 用dsml搜索 active directory对象 e156 52.7 小结 e157 第53章 c#、visual basic、 c++/cli和f# e159 53.1 名称空间 e160 53.2 定义类型 e161 53.2.1 引用类型 e161 53.2.2 值类型 e162 53.2.3 类型推断 e163 53.2.4 接口 e164 53.2.5 枚举 e165 53.3 方法 e166 53.3.1 方法的参数和返回 类型 e166 53.3.2 参数修饰符 e167 53.3.3 构造函数 e168 53.3.4 属性 e170 53.3.5 对象初始值设定项 e171 53.3.6 扩展方法 e171 53.4 静态成员 e172 53.5 数组 e173 53.6 控制语句 e174 53.6.1 if语句 e174 53.6.2 条件操作符 e174 53.6.3 switch语句 e175 53.7 循环 e176 53.7.1 for语句 e176 53.7.2 while和do…while 语句 e177 53.7.3 foreach语句 e178 53.8 异常处理 e178 53.9 继承 e180 53.9.1 访问修饰符 e180 53.9.2 关键字 e181 53.10 资源管理 e183 53.10.1 idisposable接口的 实现 e183 53.10.2 using语句 e184 53.10.3 重写finalize()方法 e184 53.11 委托 e186 53.12 事件 e188 53.13 泛型 e190 53.14 linq查询 e192 53.15 c++/cli混合本地代码 和托管代码 e192 53.16 c#的特殊功能 e193 53.17 小结 e194 第54章 .net remoting e195 54.1 使用.net remoting的 原因 e195 54.2 .net remoting术语详解 e197 54.2.1 客户端通信 e198 54.2.2 服务器端通信 e199 54.3 上下文 e199 54.3.1 激活 e200 54.3.2 特性和属性 e200 54.3.3 上下文之间的通信 e201 54.4 远程对象、客户端和 服务器 e201 54.4.1 远程对象 e201 54.4.2 简单的服务器应用 程序 e202 54.4.3 简单的客户端应用 程序 e203 54.5 .net remoting体系结构 e204 54.5.1 信道 e204 54.5.2 格式化程序 e207 54.5.3 channelservices和 remotingconfiguration e207 54.5.4 对象的激活 e209 54.5.5 消息接收器 e212 54.5.6 在远程方法中传递对象 e213 54.5.7 生命周期管理 e216 54.6 配置文件 e218 54.6.1 知名对象的服务器 配置 e220 54.6.2 知名对象的客户端 配置 e220 54.6.3 客户端激活的对象的 服务器配置 e221 54.6.4 客户端激活的对象的 客户端配置 e222 54.6.5 使用配置文件的 服务器代码 e222 54.6.6 使用配置文件的 客户端代码 e223 54.6.7 客户端信道的延迟 加载 e223 54.6.8 调试配置 e224 54.6.9 配置文件中的生命 周期服务 e224 54.6.10 格式化程序提供程序 e225 54.7 在asp.net中驻留远程 服务器 e225 54.8 类、接口和soapsuds e227 54.8.1 接口 e227 54.8.2 soapsuds e227 54.9 异步远程调用 e228 54.9.1 使用委托和 .net remoting e228 54.9.2 oneway特性 e229 54.10 .net remoting的 安全性 e229 54.11 远程处理和事件 e230 54.11.1 远程对象 e231 54.11.2 事件参数 e232 54.11.3 服务器 e233 54.11.4 服务器配置文件 e233 54.11.5 事件接收器 e234 54.11.6 客户端 e234 54.11.7 客户端配置文件 e235 54.11.8 运行程序 e236 54.12 调用上下文 e236 54.13 小结 e237 第55章 web服务和asp.net e239 55.1 soap e240 55.2 wsdl e241 55.3 web服务 e242 55.3.1 提供web服务 e242 55.3.2 使用web服务 e246 55.4 扩充事件登记示例 e248 55.4.1 事件登记 web服务 e249 55.4.2 事件登记客户端 e253 55.5 使用soap标题交换 数据 e256 55.6 小结 e261 第56章 linq to sql e263 56.1 linq to sql和 visual studio 2010 e264 56.1.1 调用products表 e265 56.1.2 添加linq to sql类 e265 56.1.3 o/r设计器概述 e266 56.1.4 创建product对象 e267 56.2 对象如何映射到linq 对象上 e269 56.2.1 datacontext对象 e270 56.2.2 table[tentity]对象 e274 56.3 脱离o/r设计器工作 e274 56.3.1 创建自己的自定义 对象 e274 56.3.2 通过自定义对象和 linq查询 e275 56.3.3 通过查询限制所调用 的列 e276 56.3.4 使用列名 e277 56.3.5 创建自己的 datacontext对象 e278 56.4 自定义对象和o/r 设计器 e279 56.5 查询数据库 e280 56.5.1 使用查询表达式 e280 56.5.2 查询表达式 e281 56.5.3 使用表达式筛选 e282 56.5.4 执行连接 e282 56.5.5 分组项 e284 56.6 存储过程 e285 56.7 小结 e286 第57章 wpf 3.0 e287 57.1 hello world示例 e287 57.2 活动 e288 57.2.1 ifelseactivity e289 57.2.2 parallelactivity e290 57.2.3 callexternalmethod activity e291 57.2.4 delayactivity e291 57.2.5 listenactivity e292 57.2.6 活动执行模型 e293 57.3 自定义活动 e293 57.3.1 活动的验证 e295 57.3.2 主题和设计器 e296 57.3.3 activitytoolboxitem 和图标 e297 57.3.4 自定义复合活动 e299 57.4 工作流 e305 57.4.1 顺序工作流 e305 57.4.2 状态机工作流 e305 57.4.3 给工作流传递参数 e307 57.4.4 从工作流中返回结果 e308 57.4.5 将参数绑定到活动上 e309 57.5 工作流运行库 e310 57.6 工作流服务 e310 57.6.1 持久性服务 e312 57.6.2 跟踪服务 e313 57.6.3 自定义服务 e315 57.7 与wcf集成 e316 57.8 驻留工作流 e318 57.9 工作流设计器 e319 57.10 从wf 3.x迁移到wf 4 e320 57.10.1 把活动代码提取到 服务中 e320 57.10.2 删除代码活动 e320 57.10.3 同时运行wf 3.x 和4 e321 57.10.4 考虑把状态机迁移到 流程图上 e321 57.11 小结 e321 ................ ..................
24KB
c#学习笔记.txt
2008-12-15c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct identifier [:interfaces] body [;] 结构与类很相似,都表示可以包含数据成员和函数成员的数据结构。与类不同的是,结构是值类型并且不需要堆分配。结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用(该变量称为对象)。 struct 类型适合表示如点、矩形和颜色这样的轻量对象。尽管可能将一个点表示为类,但结构在某些方案中更有效。在一些情况下,结构的成本较低。例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。结构可以声明构造函数,但它们必须带参数。声明结构的默认(无参数)构造函数是错误的。总是提供默认构造函数以将结构成员初始化为它们的默认值。在结构中初始化实例字段是错误的。在类中,必须初始化实例对象. 使用 new 运算符创建结构对象时,将创建该结构对象,并且调用适当的构造函数。与类不同的是,结构的实例化可以不使用 new 运算符。如果不使用 new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。但是,结构从基类 Object 继承。结构可实现接口,其方式同类完全一样。 [c ] 与 C 不同,无法使用 struct 关键字声明类。在 C# 中,类与结构在语义上是不同的。结构是值类型,而类是引用类型。 2, 装箱和拆箱(取消装箱) 装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中。关键字 object. 取消装箱是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。取消装箱操作包括:检查对象实例,确保它是给定值类型的一个装箱值。将该值从实例复制到值类型变量中。 例: int i = 123; // A value type object box = i; // Boxing int j = (int)box; // Unboxing 装箱转换 取消装箱 3 , 隐式和显式 下列转换属于隐式转换:例:object o=i; 标识转换。 隐式数值转换。 隐式枚举转换。 隐式引用转换。 装箱转换。 隐式常数表达式转换。 用户定义的隐式转换。 下列转换属于显式转换: object 0=(object)i; 所有隐式转换。 显式数值转换。 显式枚举转换。 显式引用转换。 显式接口转换。 取消装箱转换。 用户定义的显式转换 4, delegate(委托) delegate void D(int x); class C{ public static void M1(int i) { /* ... */ } public static void M2(int i) { /* ... */ }} class{…….D cd1 = new D(C.M1);………….} 委托是一个数据结构,该数据结构引用一个静态方法,或引用一个对象实例和该对象的实例方法。在 C 或 C 中与委托最接近的是函数指针,但函数指针只能引用静态函数,而委托可以同时引用静态方法和实例方法。在后一种情况中,委托不仅存储对方法入口点的引用,还存储对调用其方法的对象的引用。与 C 函数指针不同,委托是完全面对对象的;与指向成员函数的 C 指针不同,委托同时封装对象实例和方法。委托声明定义从类 System.Delegate 派生的类。委托实例封装一个或多个方法,每个方法都被称为可调用实体。对于实例方法,可调用实体由一个实例和该实例上的方法组成。对于静态方法,可调用实体仅由一个方法组成。给定委托实例和适当的参数集,便可以用该参数集调用此委托实例的所有方法。委托实例的一个有趣和有用的属性是它不了解或不关心它所封装的方法的类;真正重要的只是方法要与委托的类型兼容, 这使委托非常适合“匿名”调用。可选的形参表指定委托的参数,而返回类型则指示委托的返回类型。如果下面两个条件都为真,则方法和委托类型是兼容的:(兼容的概念就是可以用此声明的委托对方法进行委托). 1它们具有相同的参数数目,并且类型相同,顺序相同,参数修饰符也相同。 2它们的返回类型相同。 C# 中的委托类型是名称等效的,而不是结构等效的。(但是请注意:两个不同但结构上等效的委托类型的实例可能会比较为相等),准确地说,两个具有相同参数列表、签名和返回类型的不同的委托类型被认为是不同的委托类型。委托实例所封装的方法集合称为调用列表。 5, interface(接口) [attributes] [modifiers] interface identifier [:base-list] {interface-body}[;] 一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接口必须提供的成员。接口可以是命名空间或类的成员,并且可以包含下列成员的签名:方法属性 索引器. 一个接口可从一个或多个基接口继承。接口可由类实现。实现的接口的标识符出现在类的基列表中。被继承的接口称为该接口的显式基接口。当接口具有一个或多个显式基接口时,在该接口声明中,接口标识符后跟一个冒号以及由逗号分隔的基接口标识符列表。接口的基接口是显式基接口及其基接口。换言之,基接口集是显式基接口、它们的显式基接口(依此类推)的完全可传递的闭包。接口继承其基接口的所有成员。接口成员是通过 I.M 和 I[A] 形式的成员访问和索引访问表达式访问的,其中 I 是接口类型的实例,M 是该接口类型的方法、属性或事件,A 是索引器参数列表。接口可以由类和结构实现。为了指示类或结构实现接口,在该类或结构的基类列表中包含了接口标识符。在实现类或结构中定位接口成员的实现的过程称为接口映射。 6,object object 类类型是所有其他类型的最终基类。C# 中的每种类型都是直接或间接从 object 类类型派生的。可以把任何类型的数值给object类型. 7,string类型 string 类的实例表示 Unicode 字符串。尽管 string 是引用类型,但相等运算符(== 和 !=)被定义为比较 string 对象(而不是引用)的“值”(7.9.7 字符串相等运算符)。这使得对字符串相等性的测试更为直观。字符串为 string 类型并可写成两种形式,即用引号引起来和用 @ 引起来。用引号引起来的字符串括在双引号 (") 内, 并且可以包含包括换码序列在内的任何字符用 @ 引起来的字符串以 @ 开头,并用双引号引起来。用 @ 引起来的字符串以 @ 开头,并用双引号引起来。若要在一个用 @ 引起来的字符串中包括一个双引号,请使用两对双引号:@ 符号的另一种用法是使用碰巧成为 C# 关键字的被引用的 (/reference) 标识符。 8, 修饰符 修饰符作用 访问修饰符 public private internal protected 指定声明的类型和类型成员的可访问性。 访问不受限制 只有包含该类的成员的类可以访问 只有当前工程可以访问 只有包含该成员的类和继承的类可以访问 abstract指示某个类只能是其他类的基类。 const指定无法修改字段或局部变量的值。 event声明一个事件。 extern指示外部实现此方法。 override提供从基类继承的虚拟成员的新实现。 readonly声明一个字段,该字段只能赋值为该声明的一部分或者在同一类的构造函数中。 sealed指定类不能被继承。 static声明属于类型本身而不是属于特定对象的成员。 unsafe声明不安全的上下文。 virtual在派生类中声明其实现可由重写成员更改的方法或访问器。 volatile指示字段可由操作系统、硬件或并发执行的线程等在程序中进行修改。 9,语句 语句是程序指令。除非特别说明,语句都按顺序执行。C# 具有下列类别的语句。 类别C# 关键字 选择语句if, else, switch, case 迭代语句do, for, foreach, in, while 跳转语句break, continue, default, goto, return 异常处理语句throw, try-catch, try-finally Checked 和 Uncheckedchecked, unchecked fixed 语句Fixed lock 语句Lock (1) foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。此语句的形式如下: foreach (type identifier in expression) statement 若要循环访问集合,集合必须满足特定的要求。集合类型: 必须是 interface、class 或 struct。 必须包括返回类型的名为 GetEnumerator 的实例方法,例如 Enumerator(详见下文)。 Enumerator 类型(类或结构)必须包含: 一个名为 Current 的属性,它返回 ItemType 或者可以转换为此类型的类型。属性访问器返回集合的当前元素。 · 一个名为 MoveNext 的 bool 方法,它递增项计数器并在集合中存在更多项时返回 true。 有三种使用集合的方法: 使用上述指导创建一个集合。此集合只能用于 C# 程序。 1. 使用上述指导创建一个一般集合,另外实现 IEnumerable 接口。此集合可用于其他语言(如 Visual Basic)。 2. 在集合类中使用一个预定义的集合。 (2) throw 语句用于发出在程序执行期间出现反常情况(异常)的信号。throw 语句的形式为: throw [expression]; expression :异常对象。当在 catch 子句中再次引发当前异常对象时,它被省略。 (3)try –catch语句 try-catch 语句由一个 try 块和其后所跟的一个或多个 catch 子句(为不同的异常指定处理程序)构成。try-catch 语句采用下列形式之一: try try-block catch (exception-declaration-1) catch-block-1 catch (exception-declaration-2) catch-block-2 ... try try-block catch catch-block (4) fixed 防止变量被垃圾回收器重定位。 (5) lock lock 关键字将某个语句块标记为临界区。 6. 方法参数 如果为没有 ref 或 out 的方法声明一个参数,则此参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。如果没有ref,out则默认为值传递,虽然可以在方法中修改这个参数的值,但是修改后的值不会还会到调用该方法的程序中. params :params 关键字可以指定在参数数目可变处采用参数的方法参数 ref :引用传递 out : 7, namespace(名字空间) C#学习笔记(2)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-07-11 人气:8092 出处: write by cash(天下第七) 2002.01.20 版权所有,翻录不究 cashcao@msn.com 选择 我身上携带着精神、信仰、灵魂 思想、欲望、怪癖、邪念、狐臭 它们寄生于我身体的家 我必须平等对待我的每一位客人 -----------伊沙:《原则》 我的名字是cash,所以我很功利主义; 我的星像是Leo,所以我很大男人主义; 我的语言是C#,所以我有点儿拿不定主义。 /* 你能看得出来,这不是一篇正规的技术文章,所以若你不小心从里边读到了一个爱情故事,可不要奇怪。有很多人用程序来表述爱情,在其中我能看到有Money,有Girl,有一些还涉及到Sex,但是我没有找到Love,我始终相信这世上有一种力量直接来自于爱情,到现在仍然相信。*/ C#(读作C sharp),是Microsoft公司新推出的(?)专为.NET设计的一门语言,号称“C/C++家族中第一种面向组件的语言”。很多人觉得它应该像C或者C++,但事实上它更像是java的一个clone,所以作为入门,读一下清华大学出版社出版的《Java 语言与面向对象程序设计》可能会对你有所帮助。本文假定你具备一切学习此语言所需的知识,没有也不要紧,我会在文中尽量列出相关的link,鉴于互联网瞬息万变的特点,若某一链接不可用,请自行至Google查询。 如前所述,我是一个狮子座男人,一度我认为学习Java会使我看起来与众不同,可是几个月以后我放弃了这个选择,我看了论坛里关于这两种语言孰优孰劣的讨论,最终选择了C#,请不要问我为何做出这样的选择,很多人认为中文是世界上最美丽的语言,可是华人世界以外有谁在讲汉语? 另外我发现论坛上学习Java的人都非常的有个性,当有人问起学习哪种语言更好时,他会打出几百个“JAVA”来,填满整个屏幕,也不说是为了什么。我觉得这样做未免有些太霸道了,如果你说这叫偏执狂我也不反对,虽然我是狮子座,可也不想被人这样看。 在C#刚刚推出的时候,大多数的程序员都不免吼上两句——不是因为高兴,而是因为又多了一种语言。他们觉得现在的语言太多了,没有必要再多出一种来添乱子。但是当他们看完C#的文档后又开始高兴起来,因为C#是如此简单:事实上,简单正是C#最大的特点。除此之外,它还具有现代、面向对象、类型安全、版本控制、兼容、灵活等特点。详细介绍请参阅rainbow(一个长着胡子的彩虹)翻译的<<展现C#>> ,前几章非常的有趣。 看完了前面几段,我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什么的也不是什么新玩意儿,非Sun独创,有文为证:华山论剑:C#对Java。另外他对我上一集中说Microsoft越来越不要脸也极为生气,因为相比之下,Sun也不怎么样,微软已经将C#提交设在日内瓦的ECMA(European Computer Manufacturers' Association,国际标准化机构欧洲电子计算机工业会)并获得批准。Sun就从来没有将它的Java交给过ECMA,以至于正当Microsoft尽力在Visual J++基础上拓展Java功能,并使之与Windows操作系统紧密结合在一起的时候,Sun公司对Microsoft提出了法律诉讼,控告Microsoft违反了许可证协议中的条款,最终的结果是Microsoft公司不得不停止其Visual J++产品的开发。(Microsoft后来在完全面向.NET框架的开发语言集中加入了Visual J#.NET,算是对Java语言用户的一种照顾。) 有人说,选择C#意味着选择MS(在中国的程序员当中,这并不是件值得自豪的事。如果你还不能理解这种心情,可以试想一下有人很认真地对你讲他喜欢听毛宁的歌)。事实上,通过ECMA标准的C#可以由任何人在任何平台上设计出它的开发程序。比如Ximian公司的Mono工程,可以使开发者能够编写同时在Windows和Linux上运行的.Net程序,这些程序甚至还可能在其它非Windows的操作系统上运行,比方Unix。这一段时间我正在Linux下试验这个工程,遗憾的是,还没有成功。 一位师兄对此种比较颇为不屑,他认为只要选一种语言去学就好了,“重要的是你要用它,并且做的比别人好。”这让我想起来一直都很喜欢的那个歌:把你自己该做的那份工作,做得比别人出色。年轻的时候我老是用这句话自勉…… 写到这里我发现这个故事还没有提到桐桐,这篇东西是为她而作。我早在十八个月以前就答应了她,我答应了她很多事,但还没有完成一件,现在我要一件一件的去实现。所以这个故事还应该有个更好的开始。 2000年6月我大学毕业,从北京回到了石家庄,到一家什么都做的公司上班(做一个网站),最开始制作界面,然后用asp编程,如果你用过asp就会知道,这是个很无聊的工种。在此之前我在一家报社实习,为他们的网站做设计和动画。在那里我认识了桐桐。 那时候她还在上学。 >>>未完,待续... C#学习笔记(3)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-07-11 人气:6938 出处: 开始 2000年6月我大学毕业,从北京回到了石家庄,正式开始了我的职业生涯。如前所述,一开始我使用的语言是asp,我一直认为这不能称之为编程,因为asp不是一种编程语言,把它叫做动态网页实现技术可能更好。另外,asp很简单,并且,简单就是它全部的特点--这使得它很容易就能学会(在后来的工作中,我接触到许多应聘的学生,他们都告诉我自己精通asp语言)。虽然学习起来很简单,但是在使用起来却不得不多费点儿劲儿:我还能记得自己晚上一个人在办公室用VI一步一步调试某一个网页的情景,每当遇到挫折失败的时候,总是想起给桐桐打一个电话,听听她的声音。如你所知,我总是遇到困难。 现在你能看出来,我不是高手,只是一个低手... 2000年6月我大学毕业,从北京回到了石家庄,同一时间(美国西部时间6月22日上午),微软公司在位于美国西雅图郊外的总部内邀请新闻记者、新闻分析家等约400人,举行了新闻发布会“Forum2000”,宣布正式推出.Net计划。这个计划中包括了新的网络计算平台(.Net Framework)、新的语言(C#)、新的开发工具(Visual Studio.Net)以及asp的下一个版本ASP.NET,后者最开始被称为ASP+。那时候我学习的主要兴趣就在ASP.NET上,并且通过这个窗口开始了解Microsoft.Net的各个方面。 ASP.NET仍然不能称之为一种编程语言,但是现在可以把它看作是一个创建、管理、部署Web应用程序的平台。可以使用任何.Net语言在这个平台上开发互联网应用程序,这其中当然包括C#。它们之间的关系可以从下图中看出: 这就是著名的.Net 平台结构图,从这个图上可以看到,ASP.NET、Windows Forms和VS.Net都不过是.Net开发平台的一部分,用于.Net应用程序的开发及展示。.Net 平台的核心技术为:通用语言运行时(CLR:Common Language Runtime)、基类库(Base Class Library)、.Net语言及Visual Studio.Net。 从这个图上也可以看出,.Net Framework是架构在Windows平台上的一个虚拟的运行平台,你可以想象将最下层的Windows换作其它的操作系统,比如说Linux,一样可以实现使用符合了CLS(Common Language Specification,通用语言规范)的.Net语言(VB.Net、C#、JScript.Net等)来创建ASP.NET或Windows Forms(可能会叫做Linux Forms)应用程序的功能,这其实就是我们前面介绍的Mono计划所要实现的功能。所以可以这么认为,理论上,C#是一种可以跨平台的语言,这很像Java,另一个比较像Java的地方是,C#也是一种(特殊意义上的)解释性的语言。同Java一样,C#编写的程序代码也是先通过C#编译器编译为一种特殊的字节代码(中间语言,Microsoft Intermediate Language,MSIL),运行的时候再经由特定的编译器(JIT编译器,Just In Time,JITer)编译为机器代码以供操作系统执行。 不仅是C#语言,所有.Net语言(将会包括我们常用的几十种现代的编程语言)都可以编写面向CLR的程序代码,这种代码在.Net中被称为托管代码(Managed Code),所有的Managed Code都直接运行在CLR上,具有与平台无关的特性。 解释性的语言很安全,并且可以通过它的运行平台为其赋予更多的功能,比如自动内存管理、异常处理等。事实上,C#语言的许多特点都是由CLR提供的,下面的CLR结构图说明了这一点。 可以看到,类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)、多线程支持(Thread Support)这些C#的特点都是由CLR来提供的。CLR最早被称为下一代Windows服务运行时(NGWS Runtime),是直接建立在操作系统层上的一个虚拟的运行环境,主要的功能是管理代码的运行。在.Net 平台结构图中,CLR的上面是.Net的基类库(Base Class Library,BCL),这组基类库包括了从基本输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口。从.Net 平台结构图中也可以看到,基类库可以被各种语言调用和扩展,也就是说,不管是C#、VB.NET还是VC++.NET,都可以自由地调用.Net的基类库。事实上, C#并没有属于自己的类库,它所使用的编程接口就是.Net提供的基类库。所以,在决定使用C#时,真正需要费工夫学习的其实是.NET框架的基类库:C#自身只有区区77个关键词,而且其语法对许多程序员来说都是他们非常熟悉的。BCL则相反,它包含了超过4500个以上的类和无数的方法、属性,在你的C# 程序中随时都可能会用到它来完成自己的任务。 很多人都思考过应如何开始学习一种新的语言,对于一个有经验的编程人员来讲,这确非难事。但是对于一个对编写代码一无所知的人而言,如果你是以C#开始你的编程之旅的,数目繁多的概念及新名词可能会令你有些不知所措。这时候请注意你的学习顺序,任何一种编程语言的学习都是按照运行平台、语法、基类库直至各方面的应用这一顺序来进行的,但是在实际的学习中,它们之间并不是孤立的。推荐的方法是:对运行平台和语法有了一个整体的认识后,在应用中学习各种基类库的用法。鉴于C#这一语言的特殊性,全面了解它的运行平台(.Net Framework)必会使你的学习事半功倍。所以请记住上面提到的两个图,在以后的学习中,虽然可能不会明确的涉及到它们,但是在整个C#的学习过程中,它们却是无处不在的。 还有一个很重要的概念需要你明白,这就是公共语言架构(Common Language Infrastructure ,CLI)。CLI是CLR的一个子集,也就是.NET中最终对编译成MSIL代码的应用程序的运行环境进行管理的那一部分。在CLR结构图中CLI位于下半部分,主要包括类加载器(Class Loader)、实时编译器(IL To Native Compilers)和一个运行时环境的垃圾收集器(Garbage Collector)。CLI是.Net和CLR的灵魂,CLI为IL代码提供运行的环境,你可以将使用任何语言编写的代码通过其特定的编译器转换为MSIL代码之后运行其上,甚至还可以自己写MSIL代码在CLI上面运行。如你所知,欧洲计算机制造商协会(ECMA)已经于2001年10月13日批准C#语言规范(ECMA-334)成为一种新诞生的计算机产业标准。同时国际标准组织ISO也同意该标准进入该组织的审批阶段。并且,作为.Net与CLR的核心部分,CLI与C#也同时获得了ECMA的批准(ECMA-335)。拥有了C#与CLI这两项标准,你可以自己写出能够运行于任何操作系统上的.Net平台(只要你愿意)。如前所述,著名的Mono项目就是这么干的,Mono项目包括三个核心的部分:一个C#语言的编译器,一个CLI和一个类库。在Java的世界中,这项工作是由SUN公司完成的,SUN针对不同的操作系统开发出相应的Java虚拟机以便让一个由Java开发的应用程序运行在不同的操作系统上,但是迄今为止还没听说过微软有这方面打算(为用户提供非Windows系统的.Net平台)。 2000年的6月还有很多事情发生,2000年的6月我在学校做毕设,晚上就跑到系试验室看欧锦赛,我很喜欢的坎普君(Bergkamp)大放异彩,帮助荷兰队6比1大胜南斯拉夫,米哈伊洛维奇 (Mihajlovic)在比赛最后莫名的笑容永远留在了我的心中。说实话,那时候只顾着看EURO2000,可没管什么.Net、.Not。另外,离别的愁绪围绕在每个人的周围,广播里开始反反复复播放一些古老的歌曲,不知道为什么,恋曲1980却是那时候的最爱。 后来,我们都毕了业。如你所知,我离开了北京。 >>>未完,待续... C#学习笔记(4)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期:2004-07-11 人气:8360 出处: 约定 //一个典型的用C#写就的HelloWorld程序 using System; class HelloWorld { public static void Main() { Console.WriteLine("Hello World !"); } } 我忘记自己第一次用C#向世界问好是在什么时候了,不过可以肯定我已经打过招呼了,那时候用的是beta1版。现在你可以到http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml去下载.Net Framework Software Development Kit (SDK)的正式版,其中包括了前面提到的.NET Framework, 以及书写、编译、测试、开发 .NET Framework 应用程序所需要的一切——文档、例子、命令行工具和编译器。安装之后就可以开发和运行C#程序了,不过一般的建议是:一定要看.Net Framework SDK中所带的文档与例子,如果能照着例子再写一遍那就再好不过了。 当我第一次看到C#代码的时候,同样认为它很像Java,一个形象的比喻是:C#和Java是一对双胞胎,从语法的角度来讲,它们共同的父亲当然非C++莫属(请注意,不是VC++)。对于一个学过Java语言的人来说(比如说在下),要理解这段代码实在是太容易了:第一行当然是注释了,C#支持两种注释方法,以"//"开始的单行注释和以"/*"、"*/"配对使用的多行注释。第二行(using System)导入了System这个包(在C#中被称之为名字空间,Namespace),可以让我们方便的调用Microsoft.Net基类库System中的所有类,在此例中使用了System名字空间中的"Console"类,用于在控制台窗口输出程序运行结果。如前所述,C#并没有内置的输入输出语句,所有需实现的功能都完全来自于.Net基类库。这一句的作用就是告诉编译器去哪里寻找Console类以便调用。 接下来声明了一个类HelloWorld,这个类中有一个特殊的方法Main(),每个可执行文件都需要有一个入口点,在C#中,这个入口点就是Main()方法,此方法将在程序启动时被调用。在这个方法中,Console是在命名空间System下的一个类,它表示的是控制台。这里调用其静态方法WriteLine()。如同C++一样,静态方法允许我们直接作用于类而非实例对象。WriteLine()函数接受字符串类型的参数"Hello World !",并把它送入控制台显示。如前所述,C#没有自己的类库,它直接获取Microsoft.NET系统类库。在这里正是通过获取Microsoft.NET系统类库中的System.Console.WriteLine()来完成我们想要的控制台输出操作。现在使用记事本来编写这段代码,并将它的文件名保存为HelloWorld.cs,其中".cs"是C#源代码文件的扩展名。然后在配置好C#编译器的命令行环境里键入"csc HelloWorld.cs"编译文件。可以看到编译输出文件HelloWorld.exe。键入HelloWorld执行这个文件可得到下面的输出: Hello World ! 这就是第一个C#的程序,我们使用csc.exe来编译它,对于这个C#编译器,有如下说明: 1. 它是随.Net Framework SDK免费发布的,可以在DOS命令行被调用 2. 它的使用方法如下: csc SourceFile.cs /out:TargetFile.exe 如果不使用输出参数指定目标文件名,则默认输出为源文件名 3. 一般情况下,它在系统文件夹(Windows或WinNT)下的Microsoft.NET\Framework\v1.0.3705文件夹内 4. 如果你安装了VS.Net,从Visual Studio.NET Tools项目组中可以激活Visual Studio.NET Command Prompt窗口,这是一个配置好C#编译器的命令行环境 5. 使用csc.exe编译后的C#程序并不是机器代码(尽管拥有.exe的后缀名)。如前所述,C#程序只是被编译成了MSIL代码。 C#编译器(csc.exe)编译后的文件并不是一个严格意义上的可执行文件(并不包含机器代码),而是一个PE(portable executable)格式的文件,虽然它同样拥有.exe的后缀名。在这个PE文件中也不仅仅只包含中间语言,在其中还包含有元数据(Metadata)和一个由编译器添加的目标平台的标准可执行文件头。 中间语言,确切地说,应该称为微软中间语言(Microsoft Intermediate Language,MSIL),是由微软定义的一种界于源代码与机器码之间的一种语言。在CLR中,它首先会由特定的语言编译器将其包装成exe格式的伪代码(P代码)。再由特定的编译器将其转换为本地代码执行。对于微软中间语言,一个形象的比喻是:如果CLR是操作系统的话,那么微软中间语言就是.Net平台上的ASM汇编语言。它比大多数 CPU 机器语言更为高级,比如它可以理解对象类型,并具有创建和初始化对象、调用关于对象的虚拟方法以及直接操作处理数组元素的指令。它甚至还具有发现和捕获异常情况用于错误处理的指令。 元数据(Metadata)和MSIL共同存在于编译好的程序文件之中,描述了此程序包含的类型的定义、各种类型的签名及其它一些数据,相当于以前的类型库(Type Library),同时也记载了此程序所引用到的其它外部类。元数据的主要作用是将与代码有关的更多的信息提供给CLR。基本上,元数据用于如下各项任务:用于表示CLR用途的信息,如定位和装载类、内存中这些类的实例、解决调用、翻译IL为原始码、加强安全并设置运行时上下文边界。 一个由C#语言写就的源码文件在CLR环境中执行的过程是这样的:首先由C#编译器编译成包含了中间语言和元数据的PE文件,当我们在系统中调用这个文件时,CLR会启动一个编译器再将这个PE文件包含的MSIL代码转换成为托管的本地代码。转换MSIL代码为本地码的这个编译器就叫做JIT编译器(Just In Time,JITer)。请注意它并不是前面我们用到的C#编译器。 现在让我们看看JIT编译器是如何工作的:当PE文件被调用时,JIE编译器将其分解为MSIL和元数据,这时候MSIL并不直接让.Net去调用本地的系统接口,而是指定.Net系统去编译连接那些需要的CLR DLL,编译出百分之百的本地代码。整个的过程如下: 当一个类型被装载时,装载器创建一个存根(stub),并使它与类型的每一个方法相连接。当一个方法第一次被调用时,存根把控制交给JITer。JITer把MSIL编译为本地代码,并且把存根指针指向缓冲本地代码。已经被JITer编译的方法随后就直接调用已经产生的本地代码,减少了JITer编译和执行代码的时间。可以看到,JITer并不会一次性的将所有的MSIL都编译为本地代码,而是在我们需要时才即时编译,也就是说,有些代码可能从来都没有被编译过。很明显这样做的好处是既保证了运行期的安全性,又不会损失太多的效率。 这就是一个C#程序执行时的步骤。整个过程是这样的: 1) 由C#编译器将源代码编译为中间语言 2) 装入托管代码,这包括解决内存中的名字、表层类(laying out classes ),并且创建JIT编译所必需的存根。通过执行经常性校验,包括加强一些访问规则,类装载器同样也增强了安全性 3) 用JITer将 IL转换成原始代码 4) 装入元数据、校验类型安全和方法的完整性 5) 垃圾收集(GC)和异常处理 6) 描绘和查错服务 7) 管理线程和上下文以及远程管理。 不必全部理解这些概念,在以后的学习中将会一一的体会到它们的精彩,现在你需要做的(如果你还没这么干过的话),是找到ildasm.exe这个文件(一般情况下,它会和csc.exe在同一文件夹中)。顾名思义,这是一个MSIL的反汇编程序(.Net Framework IL Disassembler),在命令行窗口下输入ildasm helloworld.exe /out=helloworld.il就会得到两个文件:helloworld.il和helloworld.res。前者包括了反编译出来的元数据和MSIL代码,后者则是提取的资源文件。用记事本打开helloworld.il文件,可以看到它定义并实现了一个继承自System.Object 的HelloWorld类及两个函数:Main()和.ctor()。其中.ctor()是HelloWorld类的构造函数。在这个文件中还包括元数据和其它有关的信息。如果你觉得这样不够直观的话,可以在命令行窗口键入ildasm helloworld.exe,这样就可以启动ILDASM 窗口并向我们展示出反编译后的helloworld.exe文件。 请仔细将这些代码看上几遍,现在理解全部这些内容并不重要,但是希望你也能看一下文件中的元数据,这其中包含所有 Runtime 和编译器需要的有关程序集及其模块、类型和成员(如方法)的信息。 行文至此,我想谈一下学习。如你所知,在我们所处的环境中,学习总意味着是一个痛苦的过程,学习一种新知识好像总是为了自己的某种需求,我并不认为这样有什么不对,但我总觉着,除了拿到高薪和受人尊敬外,学习还应该带给我们更多的快乐。有些知识我们现在也许用不着,比如前面谈到的一些内容,但是我们了解了,就是一件值得高兴的事。 智慧本身就是好的,有一天我们都会死去,追求智慧的道路还会有人在走着。死掉以后的事我看不到。但在我活着的时候,想到这件事,心里就高兴。 ——王小波 今天是2002年4月7号,再过三天就是王小波的忌日了,不知道有多少人还会记得这个日子,还会记得这个人。本文的最后,我向大家推荐小波的作品——每一个心智成熟的人都应该读一读小波的文字。在他的杂文随笔集《沉默的大多数》中有一句话谈到了他作为程序员的一面: “今晚不把这段C++调通,老子就不睡了!” >>>未完,待续...
41.16MB
ASP.NET懒人工作通OA源码
2018-02-09懒人工作通网络智能办公系统是适用于企事业单位的通用型网络办公软件,该系统采用领先的B/S(浏览器/服务器)操作方式,使得网络办公不受地域限制。系统面向中小企业的免费版本,易于安装维护,安全便捷,支持虚拟主机空间。 懒人工作通系统集成了包括内部电子邮件、资讯和公告通知、日程安排、即时通讯、工作汇报、工作流程、公文流转签发和签收、电子印章与电子签名、会议管理、通讯录、论坛、投票、聊天室、云计算手写板、CRM、网络硬盘、短信息提醒、网址大全、历史今天、万年历、记事便笺等数十个极具价值的功能模块,面向集团应用,支持任意多级部门。操作简单、上手快、易用性强,一般懂得上网的用户几乎不用培训就可以开始使用。采用智能流程定制技术可以实现任意业务流程模型、表单、文件流转及审批,同时可以实现文档的痕迹保留、手写签名、电子印章和签名等功能。 懒人工作通在功能上注重实用、易用、安全、稳定,在系统安装上更提供了采用独有技术开发的智能向导安装工具和完善丰富的安装、使用教程手册,用户可在短时间内自行安装完毕,无需专业人员即可自行安装和维护。在性能方面也表现优异,使用普通PC服务器即可实现百人级别的并发应用。 懒人工作通采用基于WEB的企业计算,采用了世界上最先进的微软技术:C#语言、SqlServer/Access数据库引擎和IIS服务器,性能稳定可靠。数据存取集中控制,避免了数据泄漏的可能。提供数据备份工具,保护系统数据安全。多级的权限控制,完善的密码验证与登录机制更加强了系统安全性。 采用B/S三层结构(完全基于WEB开发); 采用C#,遵循Mircrosoft .Net2.0标准;(.net2.0 + SqlServer) 本系统实用客户群体:信息化刚起步的企事业单位。
10.0MB
《C#高级编程第七版》中文(ProfessionalC#4.0and.NET4)[共十卷][VOL5]
2011-05-26该版本已添加目录标签 并修正了一些错误 中文名: C#高级编程 第七版 原名: Professional C# 4.0 and .NET 4 别名: C#高级编程(第7版) 作者: (美)Christian Nagel Bill Evjen Jay Glynn.译者: 无.资源格式: PDF 版本: 影印版 出版社: worx.书号: ISBN:9787302239376.发行时间: 2010年 地区: 大陆 语言: 中文 本书是Wrox畅销书,C#经典名著!2009年度全行业优秀畅销书。自第一版出版以来,都是国内读者的普遍好评,累计销量近十万册。 《C#高级编程(第7版)》的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写 Windows应用程序和ASP.NET Web应用程序。 本书几乎涵盖C#语言的所有功能,对于C#初学者和有经验的程序员是值得大力推荐的书籍。实践证明,本书是关于C# 和 Visual Studio的一本全面 而且权威的参考书。 新的C# 4对于在Visual Studio 2010中编写代码是必不可少的。这本实用指南强调,C#是编写.NET 4应用程序的首选语言。《C#高级编程(第7版)》 的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写Windows应用程序和ASP.NET Web应用程序。 本书主要内容 ◆ 回顾.NET体系结构、对象、泛型、继承、数组、运算符、类型强制转换、委托、事件、Lambda表达式等 ◆ 详细论述C#中的动态对象、命名参数和可选参数、COM专用的交互操作功能、安全类型变体 ◆ 阐述.NET 4的新增功能、WF 4、ADO.NET 数据服务、MEF、并行任务库和PLINQ ◆ 深入探讨LINQ、WCF、WPF、流文档和固定文档及Silverlight等功能强大的技术 ◆ 回顾ASP.NET编程,介绍ASP.NET MVC和ASP.NET 动态数据等新功能 ◆ 讨论使用WCF、MSMQ、点对点和联合进行通信 目录: 第ⅰ部分 c# 语 言 第1章 .net体系结构 3 1.1 c#与.net的关系 3 1.2 公共语言运行库 4 1.2.1 平台无关性 4 1.2.2 提高性能 4 1.2.3 语言的互操作性 5 1.3 中间语言 6 1.3.1 面向对象和接口的支持 6 1.3.2 不同的值类型和引用类型 7 1.3.3 强数据类型化 8 1.3.4 通过异常处理错误 12 1.3.5 特性的使用 13 1.4 程序集 13 1.4.1 私有程序集 14 1.4.2 共享程序集 14 1.4.3 反射 14 1.4.4 并行编程 15 1.5 .net framework类 15 1.6 名称空间 16 .1.7 用c#创建.net应用程序 16 1.7.1 创建asp.net应用程序 16 1.7.2 创建windows窗体 18 1.7.3 使用wpf 18 1.7.4 windows控件 19 1.7.5 windows服务 19 1.7.6 wcf 19 1.7.7 windows wf 19 1.8 c#在.net企业体系结构 中的作用 19 1.9 小结 21 第2章 核心c# 23 2.1 第一个c#程序 23 2.1.1 代码 24 2.1.2 编译并运行程序 24 2.1.3 详细介绍 25 2.2 变量 26 2.2.1 变量的初始化 27 2.2.2 类型推断 28 2.2.3 变量的作用域 29 2.2.4 常量 31 2.3 预定义数据类型 32 2.3.1 值类型和引用类型 32 2.3.2 cts类型 33 2.3.3 预定义的值类型 33 2.3.4 预定义的引用类型 36 2.4 流控制 38 2.4.1 条件语句 38 2.4.2 循环 42 2.4.3 跳转语句 45 2.5 枚举 46 2.6 名称空间 47 2.6.1 using语句 49 2.6.2 名称空间的别名 49 2.7 main()方法 50 2.7.1 多个main()方法 50 2.7.2 给main()方法传递参数 52 2.8 有关编译c#文件的更多内容 52 2.9 控制台i/o 54 2.10 使用注释 56 2.10.1 源文件中的内部注释 56 2.10.2 xml文档 56 2.11 c#预处理器指令 58 2.11.1 #define和 #undef 59 2.11.2 #if, #elif, #else和#endif 59 2.11.3 #warning和 # error 60 2.11.4 #region和#endregion 61 2.11.5 #line 61 2.11.6 #pragma 61 2.12 c#编程规则 62 2.12.1 关于标识符的规则 62 2.12.2 用法约定 63 2.13 小结 68 第3章 对象和类型 69 3.1 类和结构 69 3.2 类 70 3.2.1 数据成员 70 3.2.2 函数成员 71 3.2.3 只读字段 83 3.3 匿名类型 84 3.4 结构 85 3.4.1 结构是值类型 86 3.4.2 结构和继承 87 3.4.3 结构的构造函数 87 3.5 部分类 87 3.6 静态类 89 3.7 object类 89 3.7.1 system.object()方法 90 3.7.2 tostring()方法 90 3.8 扩展方法 92 3.9 小结 93 第4章 继承 95 4.1 继承的类型 95 4.1.1 实现继承和接口继承 95 4.1.2 多重继承 95 4.1.3 结构和类 96 4.2 实现继承 96 4.2.1 虚方法 97 4.2.2 隐藏方法 98 4.2.3 调用函数的基类版本 99 4.2.4 抽象类和抽象函数 100 4.2.5 密封类和密封方法 100 4.2.6 派生类的构造函数 101 4.3 修饰符 106 4.3.1 可见性修饰符 106 4.3.2 其他修饰符 106 4.4 接口 107 4.4.1 定义和实现接口 108 4.4.2 派生的接口 111 4.5 小结 113 第5章 泛型 115 5.1 概述 115 5.1.1 性能 116 5.1.2 类型安全 117 5.1.3 二进制代码的重用 117 5.1.4 代码的扩展 117 5.1.5 命名约定 118 5.2 创建泛型类 118 5.3 泛型类的功能 122 5.3.1 默认值 123 5.3.2 约束 123 5.3.3 继承 126 5.3.4 静态成员 127 5.4 泛型接口 127 5.4.1 协变和抗变 128 5.4.2 泛型接口的协变 129 5.4.3 泛型接口的抗变 130 5.5 泛型结构 131 5.6 泛型方法 134 5.6.1 泛型方法示例 134 5.6.2 带约束的泛型方法 135 5.6.3 带委托的泛型方法 136 5.6.4 泛型方法规范 137 5.7 小结 138 第6章 数组 139 6.1 简单数组 139 6.1.1 数组的声明 139 6.1.2 数组的初始化 139 6.1.3 访问数组元素 140 6.1.4 使用引用类型 141 6.2 多维数组 142 6.3 锯齿数组 143 6.4 array类 144 6.4.1 创建数组 145 6.4.2 复制数组 146 6.4.3 排序 147 6.5 数组作为参数 150 6.5.1 数组协变 151 6.5.2 arraysegment[t] 151 6.6 枚举 152 6.6.1 ienumerator接口 152 6.6.2 foreach语句 153 6.6.3 yield语句 153 6.7 元组 158 6.8 结构比较 159 6.9 小结 162 第7章 运算符和类型强制转换 163 7.1 运算符 163 7.1.1 运算符的简化操作 165 7.1.2 运算符的优先级 169 7.2 类型的安全性 169 7.2.1 类型转换 170 7.2.2 装箱和拆箱 173 7.3 比较对象的相等性 174 7.3.1 比较引用类型的相等性 174 7.3.2 比较值类型的相等性 175 7.4 运算符重载 176 7.4.1 运算符的工作方式 177 7.4.2 运算符重载的示例: vector结构 178 7.5 用户定义的类型强制转换 185 7.5.1 实现用户定义的类型 强制转换 186 7.5.2 多重类型强制转换 192 7.6 小结 195 第8章 委托、lambda表达式 和事件 197 8.1 委托 197 8.1.1 声明委托 198 8.1.2 使用委托 199 8.1.3 简单的委托示例 202 8.1.4 action[t]和func[t] 委托 204 8.1.5 bubblesorter示例 204 8.1.6 多播委托 207 8.1.7 匿名方法 210 8.2 lambda表达式 211 8.2.1 参数 212 8.2.2 多行代码 212 8.2.3 lambda表达式外部的 变量 213 8.3 事件 214 8.3.1 事件发布程序 214 8.3.2 事件侦听器 216 8.3.3 弱事件 217 8.4 小结 220 第9章 字符串和正则表达式 221 9.1 system.string类 221 9.1.1 创建字符串 222 9.1.2 stringbuilder成员 225 9.1.3 格式字符串 226 9.2 正则表达式 231 9.2.1 正则表达式概述 232 9.2.2 regularexpressions playaround示例 233 9.2.3 显示结果 235 9.2.4 匹配、组合和捕获 237 9.3 小结 238 第10章 集合 239 10.1 集合接口和类型 239 10.2 列表 240 10.2.1 创建列表 241 10.2.2 只读集合 250 10.3 队列 250 10.4 栈 254 10.5 链表 256 10.6 有序列表 261 10.7 字典 262 10.7.1 键的类型 263 10.7.2 字典示例 264 10.7.3 lookup类 268 10.7.4 有序字典 269 10.8 集 269 10.9 可观察的集合 271 10.10 位数组 272 10.10.1 bitarray类 273 10.10.2 bitvector32结构 275 10.11 并发集合 277 10.12 性能 279 10.13 小结 281 第11章 linq 283 11.1 linq概述 283 11.1.1 列表和实体 283 11.1.2 linq查询 287 11.1.3 扩展方法 288 11.1.4 推迟查询的执行 289 11.2 标准的查询操作符 291 11.2.1 筛选 293 11.2.2 用索引筛选 293 11.2.3 类型筛选 294 11.2.4 复合的from子句 294 11.2.5 排序 295 11.2.6 分组 296 11.2.7 对嵌套的对象分组 297 11.2.8 连接 298 11.2.9 集合操作 300 11.2.10 合并 301 11.2.11 分区 302 11.2.12 聚合操作符 303 11.2.13 转换 304 11.2.14 生成操作符 305 11.3 并行linq 306 11.3.1 并行查询 306 11.3.2 分区器 307 11.3.3 取消 307 11.4 表达式树 308 11.5 linq提供程序 311 11.6 小结 311 第12章 动态语言扩展 313 12.1 dlr 313 12.2 dynamic类型 313 12.3 包含dlr scriptruntime 318 12.4 dynamicobject和 expandoobject 321 12.4.1 dynamicobject 321 12.4.2 expandoobject 323 12.5 小结 324 第13章 内存管理和指针 325 13.1 后台内存管理 325 13.1.1 值数据类型 325 13.1.2 引用数据类型 327 13.1.3 垃圾回收 328 13.2 释放非托管的资源 330 13.2.1 析构函数 330 13.2.2 idisposable接口 331 13.2.3 实现idisposable接口 和析构函数 332 13.3 不安全的代码 334 13.3.1 用指针直接访问内存 334 13.3.2 指针示例: pointerplayground 343 13.3.3 使用指针优化性能 347 13.4 小结 350 第14章 反射 351 14.1 自定义特性 351 14.1.1 编写自定义特性 352 14.1.2 自定义特性示例: whatsnewattributes 355 14.2 反射 358 14.2.1 system.type类 358 14.2.2 typeview示例 360 14.2.3 assembly类 362 14.2.4 完成whatsnew attributes示例 364 14.3 小结 368 第15章 错误和异常 369 15.1 异常类 369 15.2 捕获异常 371 15.2.1 实现多个catch块 373 15.2.2 在其他代码中捕获异常 376 15.2.3 system.exception属性 376 15.2.4 没有处理异常时所发生 的情况 377 15.2.5 嵌套的 try块 378 15.3 用户定义的异常类 379 15.3.1 捕获用户定义的异常 380 15.3.2 抛出用户定义的异常 382 15.3.3 定义用户定义的异常类 385 15.4 小结 387 第ⅱ部分 visual studio 第16章 visual studio 2010 391 16.1 使用visual studio 2010 391 16.1.1 创建项目 395 16.1.2 解决方案和项目的区别 401 16.1.3 windows应用程序代码 403 16.1.4 项目的浏览和编码 404 16.1.5 生成项目 411 16.1.6 调试代码 415 16.2 重构工具 418 16.3 面向多个版本的 .net framework 420 16.4 wpf、wcf、wf等 421 16.4.1 在visual studio 2010 中构建wpf应用程序 421 16.4.2 在visual studio 2010 中构建wf应用程序 423 16.5 小结 424 第17章 部署 425 17.1 部署的规划 425 17.1.1 部署选项 426 17.1.2 部署要求 426 17.1.3 部署.net运行库 427 17.2 简单的部署选项 427 17.2.1 xcopy部署 428 17.2.2 xcopy和web 应用程序 428 17.2.3 发布web站点 429 17.3 visual studio 2010安装 和部署项目 429 17.3.1 windows installer 430 17.3.2 创建安装程序 430 17.4 clickonce 437 17.4.1 clickonce操作 437 17.4.2 发布clickonce 应用程序 438 17.4.3 clickonce设置 438 17.4.4 clickonce文件的 应用程序缓存 439 17.4.5 应用程序的安全性 439 17.5 visual studio 2010 高级选项 440 17.5.1 文件系统编辑器 440 17.5.2 注册表编辑器 440 17.5.3 文件类型编辑器 440 17.5.4 用户界面编辑器 441 17.5.5 自定义动作编辑器 442 17.5.6 launch conditions 编辑器 443 17.6 小结 444 第ⅲ部分 基 础 第18章 程序集 447 18.1 程序集的含义 447 18.1.1 程序集的功能 448 18.1.2 程序集的结构 448 18.1.3 程序集清单 449 18.1.4 名称空间、程序集 和组件 449 18.1.5 私有程序集和共享 程序集 449 18.1.6 附属程序集 450 18.1.7 查看程序集 450 18.2 创建程序集 451 18.2.1 创建模块和程序集 451 18.2.2 程序集的特性 452 18.2.3 动态加载和创建 程序集 454 18.3 应用程序域 457 18.4 共享程序集 461 18.4.1 强名 462 18.4.2 使用强名获得完整性 462 18.4.3 全局程序集缓存 463 18.4.4 创建共享程序集 463 18.4.5 创建强名 464 18.4.6 安装共享程序集 465 18.4.7 使用共享程序集 465 18.4.8 程序集的延迟签名 466 18.4.9 引用 467 18.4.10 本机映像生成器 468 18.5 配置.net应用程序 469 18.5.1 配置类别 469 18.5.2 绑定程序集 470 18.6 版本问题 471 18.6.1 版本号 472 18.6.2 通过编程方式获取版本 472 18.6.3 绑定到程序集版本 473 18.6.4 发行者策略文件 474 18.6.5 运行库的版本 475 18.7 小结 476 第19章 检测 477 19.1 代码协定 477 19.1.1 前提条件 479 19.1.2 后置条件 480 19.1.3 常量 481 19.1.4 接口的协定 481 19.2 跟踪 483 19.2.1 跟踪源 484 19.2.2 跟踪开关 485 19.2.3 跟踪侦听器 486 19.2.4 筛选器 488 19.2.5 相关性 489 19.3 事件日志 492 19.3.1 事件日志体系结构 493 19.3.2 事件日志类 494 19.3.3 创建事件源 494 19.3.4 写入事件日志 495 19.3.5 资源文件 496 19.4 性能监控 500 19.4.1 性能监控类 500 19.4.2 性能计数器生成器 500 19.4.3 添加performance counter组件 503 19.4.4 perfmon.exe 505 19.5 小结 506 第20章 线程、任务和同步 507 20.1 概述 507 20.2 异步委托 508 20.2.1 投票 508 20.2.2 等待句柄 509 20.2.3 异步回调 510 20.3 thread类 512 20.3.1 给线程传递数据 513 20.3.2 后台线程 514 20.3.3 线程的优先级 515 20.3.4 控制线程 515 20.4 线程池 516 20.5 任务 517 20.5.1 启动任务 517 20.5.2 连续的任务 518 20.5.3 任务层次结构 519 20.5.4 任务的结果 520 20.6 parallel类 521 20.6.1 用parallel.for() 方法循环 521 20.6.2 使用parallel.foreach() 方法循环 523 20.6.3 通过parallel.invoke() 方法调用多个方法 524 20.7 取消架构 524 20.7.1 parallel.for()方法 的取消 524 20.7.2 任务的取消 526 20.8 线程问题 527 20.8.1 争用条件 527 20.8.2 死锁 530 20.9 同步 532 20.9.1 lock语句和线程安全 532 20.9.2 interlocked类 538 20.9.3 monitor类 539 20.9.4 spinlock结构 540 20.9.5 waithandle基类 540 20.9.6 mutex类 541 20.9.7 semaphore类 542 20.9.8 events类 544 20.9.9 barrier类 547 20.9.10 readerwriterlockslim 类 549 20.10 timer类 552 20.11 基于事件的异步模式 554 20.11.1 backgroundworker 类 554 20.11.2 启用取消功能 557 20.11.3 启用进度功能 558 20.11.4 创建基于事件的异步 组件 559 20.12 小结 563 第21章 安全性 565 21.1 身份验证和授权 565 21.1.1 标识和principal 565 21.1.2 角色 567 21.1.3 声明基于角色的安全性 567 21.1.4 客户端应用程序服务 568 21.2 加密 573 21.2.1 签名 575 21.2.2 交换密钥和安全传输 576 21.3 资源的访问控制 579 21.4 代码访问安全性 582 21.4.1 第2级安全透明性 582 21.4.2 权限 583 21.5 使用证书发布代码 588 21.6 小结 588 第22章 本地化 591 22.1 system.globalization 名称空间 591 22.1.1 unicode问题 592 22.1.2 区域性和区域 592 22.1.3 使用区域性 596 22.1.4 排序 600 22.2 资源 602 22.2.1 创建资源文件 602 22.2.2 资源文件生成器 602 22.2.3 resourcewriter 603 22.2.4 使用资源文件 604 22.2.5 system.resources 名称空间 607 22.3 使用visual studio的 windows窗体本地化 607 22.3.1 通过编程方式修改 区域性 612 22.3.2 使用自定义资源文件 613 22.3.3 资源的自动回退 614 22.3.4 外包翻译 615 22.4 用asp.net本地化 615 22.5 用wpf本地化 617 22.5.1 用于wpf的.net资源 618 22.5.2 xaml资源字典 619 22.6 自定义资源读取器 622 22.6.1 创建databaseresource reader类 623 22.6.2 创建databaseresource set类 625 22.6.3 创建databaseresource manager类 625 22.6.4 databaseresourcereader 的客户端应用程序 626 22.7 创建自定义区域性 626 22.8 小结 628 第23章 system.transactions 629 23.1 概述 629 23.1.1 事务处理阶段 630 23.1.2 acid属性 630 23.2 数据库和实体类 631 23.3 传统的事务 633 23.3.1 ado.net事务 633 23.3.2 system.enterprise services 634 23.4 system.transactions 635 23.4.1 可提交的事务 636 23.4.2 事务处理的升级 638 23.4.3 依赖事务 640 23.4.4 环境事务 642 23.5 隔离级别 649 23.6 自定义资源管理器 650 23.7 windows 7和windows server 2008的事务 656 23.8 小结 660 第24章 网络 661 24.1 webclient类 661 24.1.1 下载文件 662 24.1.2 基本的webclient示例 662 24.1.3 上传文件 663 24.2 webrequest类和 webresponse类 664 24.2.1 身份验证 666 24.2.2 使用代理 666 24.2.3 异步页面请求 666 24.3 把输出结果显示为 html页面 667 24.3.1 从应用程序中进行 简单的web浏览 667 24.3.2 启动internet explorer 实例 669 24.3.3 给应用程序提供更多 的ie类型特性 669 24.3.4 使用webbrowser控件 打印 674 24.3.5 显示请求页面的代码 674 24.3.6 webrequest类 和webresponse类的 层次结构 676 24.4 实用工具类 676 24.4.1 uri 676 24.4.2 ip地址和dns名称 677 24.5 较低层的协议 679 24.5.1 使用smtpclient 680 24.5.2 使用tcp类 682 24.5.3 tcpsend和tcpreceive 示例 682 24.5.4 tcp和udp 684 24.5.5 udp类 684 24.5.6 socket类 685 24.6 小结 689 第25章 windows服务 691 25.1 windows服务 691 25.2 windows服务的体系结构 692 25.2.1 服务程序 692 25.2.2 服务控制程序 694 25.2.3 服务配置程序 694 25.2.4 windows服务的类 694 25.3 创建windows服务程序 694 25.3.1 创建服务的核心功能 695 25.3.2 quoteclient示例 698 25.3.3 windows服务程序 699 25.3.4 线程和服务 703 25.3.5 服务的安装 704 25.3.6 安装程序 704 25.4 服务的监视和控制 708 25.4.1 mmc管理单元 708 25.4.2 net.exe实用程序 709 25.4.3 sc.exe实用程序 710 25.4.4 visual studio server explorer 710 25.4.5 编写自定义 servicecontroller类 710 25.5 故障排除和事件日志 718 25.6 小结 719 第26章 互操作性 721 26.1 .net和com 721 26.1.1 元数据 722 26.1.2 释放内存 722 26.1.3 接口 722 26.1.4 方法的绑定 724 26.1.5 数据类型 724 26.1.6 注册 724 26.1.7 线程 725 26.1.8 错误处理 726 26.1.9 事件 727 26.2 编组 727 26.3 从.net客户端中使用 com组件 728 26.3.1 创建com组件 728 26.3.2 创建rcw 734 26.3.3 使用rcw 735 26.3.4 使用com服务器和 动态语言扩展 736 26.3.5 线程问题 737 26.3.6 添加连接点 737 26.4 从com客户端中使用 .net组件 739 26.4.1 ccm 740 26.4.2 创建.net组件 740 26.4.3 创建类型库 741 26.4.4 com互操作特性 743 26.4.5 com注册 745 26.4.6 创建com客户端 应用程序 746 26.4.7 添加连接点 747 26.4.8 用sink对象创建 客户端 748 26.5 平台调用 750 26.6 小结 754 第27章 核心xaml 755 27.1 概述 755 27.1.1 元素映射到.net 对象上 756 27.1.2 使用自定义.net类 757 27.1.3 把特性用作属性 759 27.1.4 把特性用作元素 759 27.1.5 基本的.net类型 760 27.1.6 集合 760 27.1.7 构造函数 761 27.2 依赖属性 761 27.2.1 创建依赖类型 762 27.2.2 强制值回调 763 27.2.3 值变更回调和事件 764 27.2.4 事件的冒泡和隧道 764 27.3 附加属性 767 27.4 标记扩展 770 27.5 创建自定义标记扩展 770 27.6 xaml定义的标记扩展 772 27.7 读写xaml 772 27.8 小结 773 第28章 managed extensibility framework 775 28.1 mef的体系结构 775 28.2 协定 782 28.3 导出 783 28.3.1 导出属性和方法 787 28.3.2 导出元数据 789 28.4 导入 791 28.5 容器和出口提供程序 794 28.6 类别 797 28.7 小结 798 第29章 文件和注册表操作 799 29.1 管理文件系统 799 29.1.1 表示文件和文件夹 的.net类 800 29.1.2 path类 803 29.1.3 fileproperties示例 803 29.2 移动、复制和删除文件 808 29.2.1 filepropertiesandmovement 示例 808 29.2.2 filepropertiesandmovement 示例的代码 809 29.3 读写文件 812 29.3.1 读取文件 812 29.3.2 写入文件 814 29.3.3 流 815 29.3.4 缓存的流 816 29.3.5 使用filestream类读写 二进制文件 816 29.3.6 读写文本文件 821 29.4 映射内存的文件 827 29.5 读取驱动器信息 829 29.6 文件的安全性 831 29.6.1 从文件中读取acl 831 29.6.2 从目录中读取acl 832 29.6.3 添加和删除文件中 的acl项 833 29.7 读写注册表 835 29.7.1 注册表 835 29.7.2 .net注册表类 837 29.8 读写独立存储器 839 29.9 小结 844 第ⅳ部分 数 据 第30章 核心ado.net 847 30.1 ado.net概述 847 30.1.1 名称空间 848 30.1.2 共享类 848 30.1.3 数据库专用的类 849 30.2 使用数据库连接 850 30.2.1 管理连接字符串 851 30.2.2 高效地使用连接 852 30.2.3 事务 854 30.3 命令 855 30.3.1 执行命令 856 30.3.2 调用存储过程 860 30.4 快速数据访问: 数据读取器 862 30.5 管理数据和关系: dataset类 865 30.5.1 数据表 866 30.5.2 数据列 866 30.5.3 数据关系 871 30.5.4 数据约束 872 30.6 xml架构:用xsd 生成代码 875 30.7 填充dataset类 881 30.7.1 用数据适配器填充 dataset 882 30.7.2 从xml中填充 dataset类 883 30.8 持久化dataset类的修改 883 30.8.1 通过数据适配器进行 更新 883 30.8.2 写入xml输出结果 886 30.9 使用ado.net 887 30.9.1 分层开发 887 30.9.2 生成sql server的键 888 30.9.3 命名约定 891 30.10 小结 892 第31章 ado.net entity framework 893 31.1 ado.net entity framework概述 893 31.2 entity framework映射 894 31.2.1 逻辑层 895 31.2.2 概念层 897 31.2.3 映射层 898 31.3 entity client 899 31.3.1 连接字符串 900 31.3.2 entity sql 900 31.4 实体 901 31.5 对象上下文 904 31.6 关系 906 31.6.1 一个层次结构一个表 907 31.6.2 一种类型一个表 908 31.6.3 懒惰加载、延迟加载 和预先加载 909 31.7 对象查询 910 31.8 更新 913 31.8.1 对象跟踪 913 31.8.2 改变信息 914 31.8.3 附加和分离实体 916 31.8.4 存储实体的变化 916 31.9 linq to entities 917 31.10 小结 918 第32章 数据服务 919 32.1 概述 919 32.2 包含clr对象的自定义 宿主 920 32.2.1 clr对象 920 32.2.2 数据模型 922 32.2.3 数据服务 923 32.2.4 驻留服务 923 32.2.5 其他服务操作 924 32.3 http客户端应用程序 925 32.4 使用wcf数据服务和 ado.net entity framework 929 32.4.1 asp.net宿主和edm 929 32.4.2 使用system.data .service.client的.net 应用程序 931 32.5 小结 938 第33章 处理xml 939 33.1 .net支持的xml标准 940 33.2 system.xml名称空间 940 33.3 使用system.xml类 941 33.4 读写流格式的xml 942 33.4.1 使用 xmlreader类 942 33.4.2 使用xmlreader类进行 验证 946 33.4.3 使用xmlwriter类 947 33.5 在.net中使用dom 949 33.6 使用xpathnavigator类 954 33.6.1 system.xml.xpath 名称空间 954 33.6.2 system.xml.xsl 名称空间 959 33.6.3 调试xslt 963 33.7 xml和ado.net 965 33.7.1 将ado.net数据 转换为xml文档 965 33.7.2 把xml文档转换为 ado.net数据 970 33.8 在xml中序列化对象 972 33.9 linq to xml和.net 982 33.10 使用不同的xml对象 982 33.10.1 xdocument对象 982 33.10.2 xelement对象 983 33.10.3 xnamespace对象 984 33.10.4 xcomment对象 986 33.10.5 xattribute对象 986 33.11 使用linq查询xml 文档 987 33.11.1 查询静态的xml 文档 987 33.11.2 查询动态的xml 文档 989 33.12 xml文档的更多查询 技术 990 33.12.1 读取xml文档 990 33.12.2 写入xml文档 992 33.13 小结 993 第34章 .net编程和sql server 995 34.1 .net运行库的宿主 995 34.2 microsoft.sqlserver.server 997 34.3 用户定义的类型 998 34.3.1 创建udt 998 34.3.2 通过sql使用udt 1003 34.3.3 从客户端代码中使用 udt 1004 34.4 用户定义的聚合函数 1005 34.4.1 创建用户定义的 聚合函数 1006 34.4.2 使用用户定义的 聚合函数 1007 34.5 存储过程 1007 34.5.1 创建存储过程 1008 34.5.2 使用存储过程 1009 34.6 用户定义的函数 1010 34.6.1 创建用户定义的函数 1010 34.6.2 使用用户定义的函数 1010 34.7 触发器 1011 34.7.1 创建触发器 1011 34.7.2 使用触发器 1012 34.8 xml数据类型 1013 34.8.1 包含xml数据的表 1013 34.8.2 读取xml值 1014 34.8.3 数据的查询 1017 34.8.4 xml数据修改语言 (xml dml) 1019 34.8.5 xml索引 1020 34.8.6 强类型化的xml 1021 34.9 小结 1022 第ⅴ部分 显 示 第35章 核心wpf 1025 35.1 概述 1025 35.1.1 名称空间 1025 35.1.2 类层次结构 1027 35.2 形状 1028 35.3 几何图形 1030 35.4 变换 1032 35.5 画笔 1033 35.5.1 solidcolorbrush 1033 35.5.2 lineargradientbrush 1034 35.5.3 radialgradientbrush 1034 35.5.4 drawingbrush 1035 35.5.5 imagebrush 1035 35.5.6 visualbrush 1036 35.6 控件 1037 35.6.1 简单控件 1037 35.6.2 内容控件 1038 35.6.3 带标题的内容控件 1039 35.6.4 项控件 1040 35.6.5 带标题的项控件 1041 35.6.6 修饰 1041 35.7 布局 1042 35.7.1 stackpanel 1042 35.7.2 wrappanel 1043 35.7.3 canvas 1044 35.7.4 dockpanel 1044 35.7.5 grid 1045 35.8 样式和资源 1046 35.8.1 样式 1046 35.8.2 资源 1048 35.8.3 系统资源 1049 35.8.4 从代码中访问资源 1050 35.8.5 动态资源 1050 35.8.6 资源字典 1051 35.9 触发器 1052 35.9.1 属性触发器 1053 35.9.2 多触发器 1054 35.9.3 数据触发器 1055 35.10 模板 1056 35.10.1 控件模板 1057 35.10.2 数据模板 1060 35.10.3 样式化列表框 1061 35.10.4 itemtemplate 1062 35.10.5 列表框元素的控件 模板 1064 35.11 动画 1066 35.11.1 时间轴 1066 35.11.2 非线性动画 1069 35.11.3 事件触发器 1069 35.11.4 关键帧动画 1072 35.12 可见状态管理器 1073 35.13 3-d 1076 35.13.1 模型 1077 35.13.2 照相机 1079 35.13.3 光线 1079 35.13.4 旋转 1079 35.14 小结 1080 第36章 用wpf编写业务 应用程序 1083 36.1 数据绑定 1083 36.1.1 booksdemo应用程序 1084 36.1.2 用xaml绑定 1086 36.1.3 简单对象的绑定 1088 36.1.4 更改通知 1090 36.1.5 对象数据提供程序 1092 36.1.6 列表绑定 1094 36.1.7 主从绑定 1096 36.1.8 多绑定 1097 36.1.9 优先绑定 1099 36.1.10 值的转换 1100 36.1.11 动态添加列表项 1102 36.1.12 数据模板选择器 1103 36.1.13 绑定到xml上 1105 36.1.14 绑定的验证 1107 36.2 commanding 1111 36.2.1 定义命令 1112 36.2.2 定义命令源 1113 36.2.3 命令绑定 1113 36.3 treeview 1114 36.4 datagrid 1118 36.4.1 自定义列 1120 36.4.2 行的细节 1121 36.4.3 用datagrid进行分组 1121 36.5 小结 1124 第37章 用wpf创建文档 1125 37.1 文本元素 1125 37.1.1 字体 1125 37.1.2 texteffect 1127 37.1.3 内联 1128 37.1.4 块 1130 37.1.5 列表 1132 37.1.6 表 1132 37.1.7 块的锚定 1134 37.2 流文档 1135 37.3 固定文档 1136 37.4 xps文档 1140 37.5 打印 1141 37.5.1 用printdialog打印 1142 37.5.2 打印可见元素 1142 37.6 小结 1144 第38章 silverlight 1145 38.1 wpf和silverlight的比较 1145 38.2 创建silverlight项目 1146 38.3 导航 1148 38.4 网络 1152 38.4.1 创建ado.net entity data model 1153 38.4.2 为silverlight客户端 创建wcf服务 1153 38.4.3 调用wcf服务 1155 38.4.4 使用wcf数据服务 1158 38.4.5 使用system.net访问 服务 1160 38.5 浏览器集成 1162 38.5.1 调用javascript 1162 38.5.2 javascript调用 silverlight 1163 38.6 在浏览器外运行的 silverlight应用程序 1164 38.7 小结 1167 第39章 windows窗体 1169 39.1 创建windows窗体 应用程序 1169 39.2 control类 1175 39.2.1 大小和位置 1175 39.2.2 外观 1176 39.2.3 用户交互操作 1176 39.2.4 windows功能 1177 39.2.5 其他功能 1177 39.3 标准控件和组件 1178 39.3.1 button控件 1178 39.3.2 checkbox控件 1178 39.3.3 radiobutton控件 1179 39.3.4 combobox控件、 listbox控件和 checkedlistbox控件 1179 39.3.5 datagridview控件 1180 39.3.6 datetimepicker控件 1188 39.3.7 errorprovider组件 1188 39.3.8 imagelist组件 1189 39.3.9 label控件 1189 39.3.10 listview控件 1189 39.3.11 picturebox控件 1189 39.3.12 progressbar控件 1190 39.3.13 textbox控件、 richtextbox控件与 maskedtextbox控件 1190 39.3.14 panel控件 1191 39.3.15 flowlayoutpanel和 tablelayoutpanel 控件 1191 39.3.16 splitcontainer控件 1192 39.3.17 tabcontrol控件和 tabpages控件 1192 39.3.18 toolstrip控件 1193 39.3.19 menustrip控件 1194 39.3.20 contextmenustrip 控件 1194 39.3.21 toolstripmenuitem 控件 1194 39.3.22 toolstripmanager类 1194 39.3.23 toolstripcontainer 控件 1195 39.4 窗体 1195 39.4.1 form类 1195 39.4.2 多文档界面 1199 39.4.3 创建自己的用户控件 1200 39.5 小结 1200 第40章 核心asp.net 1201 40.1 asp.net概述 1201 40.1.1 asp.net文件的 处理方式 1202 40.1.2 web站点和web 应用程序 1202 40.1.3 asp.net中的状态 管理 1203 40.2 asp.net web窗体 1203 40.2.1 asp.net代码模型 1207 40.2.2 asp.net服务器控件 1208 40.3 ado.net和数据绑定 1222 40.3.1 更新事件登记 应用程序 1222 40.3.2 数据绑定的更多内容 1229 40.4 应用程序配置 1234 40.5 小结 1236 第41章 asp.net的功能 1237 41.1 用户控件和自定义控件 1238 41.1.1 用户控件 1238 41.1.2 pcsdemosite中的 用户控件 1242 41.1.3 自定义控件 1243 41.2 母版页 1247 41.2.1 在web页面中 访问母版页 1248 41.2.2 嵌套的母版页 1248 41.2.3 pcsdemosite中 的母版页 1249 41.3 站点导航 1250 41.3.1 添加站点地图文件 1251 41.3.2 pcsdemosite中 的导航 1252 41.4 安全性 1253 41.4.1 使用security setup 添加forms身份验证 功能 1254 41.4.2 实现登录系统 1255 41.4.3 web 登录服务器控件 1255 41.4.4 保护目录 1256 41.4.5 pcsdemosite中的 安全性 1257 41.5 主题 1259 41.5.1 把主题应用于页面 1259 41.5.2 定义主题 1260 41.5.3 pcsdemosite中的 主题 1260 41.6 web部件 1263 41.6.1 web部件应用程序 组件 1263 41.6.2 web部件示例 1264 41.7 asp.net ajax 1270 41.8 ajax的概念 1271 41.9 asp.net ajax 1273 41.9.1 核心功能 1273 41.9.2 asp.net ajax control toolkit 1275 41.10 asp.net ajax网站 示例 1276 41.11 支持asp.net ajax的 网站配置 1278 41.12 添加asp.net ajax 功能 1279 41.12.1 scriptmanager控件 1280 41.12.2 使用updatepanel 控件 1281 41.12.3 使用updateprogress 1283 41.12.4 使用扩展控件 1284 41.13 使用ajax库 1286 41.13.1 给web页面添加 javascript 1286 41.13.2 全局实用程序函数 1287 41.13.3 使用ajax库 javascript oop 扩展 1287 41.13.4 pagerequestmanager 对象和application 对象 1289 41.13.5 javascript的调试 1292 41.13.6 异步调用web方法 1293 41.13.7 asp.net应用程序 服务 1294 41.14 小结 1294 第42章 asp.net动态数据 和mvc 1297 42.1 路由 1298 42.1.1 查询字符串参数 1298 42.1.2 定义路由 1300 42.1.3 使用路由参数 1303 42.2 动态数据 1305 42.2.1 创建动态数据网站 1305 42.2.2 定制动态数据网站 1310 42.2.3 进一步开发 1314 42.3 mvc 1314 42.3.1 mvc的含义 1314 42.3.2 asp.net mvc的 含义 1315 42.3.3 简单的asp.net mvc 应用程序 1315 42.3.4 定制asp.net mvc 应用程序 1321 42.3.5 进一步开发 1329 42.4 小结 1330 第ⅵ部分 通 信 第43章 wcf 1333 43.1 wcf概述 1333 43.1.1 soap 1335 43.1.2 wsdl 1335 43.1.3 rest 1335 43.1.4 json 1336 43.2 简单的服务和客户端 1336 43.2.1 服务协定 1337 43.2.2 服务的实现 1338 43.2.3 wcf服务宿主和 wcf测试客户端 1338 43.2.4 自定义服务宿主 1340 43.2.5 wcf客户端 1342 43.2.6 诊断 1343 43.3 协定 1345 43.3.1 数据协定 1345 43.3.2 版本问题 1346 43.3.3 服务协定 1346 43.3.4 消息协定 1347 43.4 服务的实现 1348 43.4.1 以编程方式创建 客户端 1351 43.4.2 错误处理 1352 43.5 绑定 1353 43.6 宿主 1356 43.6.1 自定义宿主 1356 43.6.2 was宿主 1357 43.6.3 预配置的宿主类 1357 43.7 客户端 1358 43.8 双工通信 1360 43.9 小结 1362 第44章 windows wf 4 1363 44.1 hello world示例 1363 44.2 活动 1365 44.2.1 if活动 1366 44.2.2 invokemethod活动 1367 44.2.3 parallel活动 1367 44.2.4 delay活动 1368 44.2.5 pick活动 1368 44.3 自定义活动 1369 44.3.1 活动的验证 1370 44.3.2 设计器 1371 44.3.3 自定义复合活动 1373 44.4 工作流 1375 44.4.1 实参和变量 1376 44.4.2 workflowapplication 1377 44.4.3 workflowservicehost 1381 44.4.4 驻留设计器 1386 44.5 小结 1391 第45章 对等网络 1393 45.1 p2p网络概述 1393 45.1.1 客户端-服务器体系 结构 1393 45.1.2 p2p体系结构 1394 45.1.3 p2p体系结构的挑战 1395 45.1.4 p2p术语 1396 45.1.5 p2p解决方案 1396 45.2 microsoft windows peer-to-peer networking 1396 45.2.1 pnrp 1396 45.2.2 people near me 1399 45.3 构建p2p应用程序 1400 45.3.1 system.net.peertopeer 1400 45.3.2 system.net.peertopeer .collaboration 1405 45.4 小结 1408 第46章 消息队列 1409 46.1 概述 1409 46.1.1 使用消息队列的场合 1410 46.1.2 消息队列功能 1411 46.2 message queuing产品 1412 46.3 消息队列体系结构 1412 46.3.1 消息 1413 46.3.2 消息队列 1413 46.4 message queuing 管理工具 1414 46.4.1 创建消息队列 1414 46.4.2 消息队列属性 1415 46.5 消息队列的编程实现 1415 46.5.1 创建消息队列 1415 46.5.2 查找队列 1416 46.5.3 打开已知队列 1417 46.5.4 发送消息 1418 46.5.5 接收消息 1421 46.6 课程订单应用程序 1423 46.6.1 课程订单类库 1423 46.6.2 课程订单消息 发送程序 1424 46.6.3 发送优先级和可恢复 的消息 1425 46.6.4 课程订单消息接收 程序 1426 46.7 接收结果 1429 46.7.1 确认队列 1430 46.7.2 响应队列 1430 46.8 事务队列 1431 46.9 消息队列和wcf 1432 46.9.1 带数据协定的实体类 1432 46.9.2 wcf服务协定 1433 46.9.3 wcf消息接收 应用程序 1434 46.9.4 wcf消息发送 应用程序 1437 46.10 消息队列的安装 1438 46.11 小结 1438 第47章 syndication 1441 47.1 system.servicemodel. syndication名称空间 概述 1441 47.2 读取联合源的示例 1442 47.3 联合源的示例 1444 47.4 小结 1449 第ⅶ部分 附 录 附录a 1453 ***以下内容见随书附赠光盘*** 第48章 使用gdi+绘图 e1 48.1 理解绘图规则 e1 48.1.1 gdi和gdi+ e2 48.1.2 绘制图形 e3 48.1.3 使用onpaint()方法 绘制图形 e6 48.1.4 使用剪切区域 e7 48.2 测量坐标和区域 e9 48.2.1 point和pointf结构 e9 48.2.2 size和sizef结构 e10 48.2.3 rectangle和rectanglef 结构 e11 48.2.4 region e12 48.3 调试须知 e13 48.4 绘制可滚动的窗口 e14 48.5 世界、页面和设备坐标 e18 48.6 颜色 e19 48.6.1 rgb值 e19 48.6.2 命名颜色 e20 48.6.3 图形显示模式和安全 的调色板 e20 48.6.4 安全调色板 e21 48.7 画笔和钢笔 e21 48.7.1 画笔 e22 48.7.2 钢笔 e23 48.8 绘制图形和线条 e23 48.9 显示图像 e25 48.10 处理图像时的问题 e27 48.11 绘制文本 e28 48.12 简单的文本示例 e29 48.13 字体和字体系列 e30 48.14 示例:枚举字体系列 e31 48.15 编辑文本文档: capseditor示例 e33 48.15.1 invalidate()方法 e37 48.15.2 计算项的大小和文档 的大小 e38 48.15.3 onpaint()方法 e39 48.15.4 坐标转换 e41 48.15.5 响应用户的输入 e42 48.16 打印 e45 48.17 小结 e50 第49章 vsto e51 49.1 vsto概述 e51 49.1.1 项目类型 e52 49.1.2 项目功能 e54 49.2 vsto项目基础 e55 49.2.1 office对象模型 e55 49.2.2 vsto名称空间 e55 49.2.3 宿主项和宿主控件 e56 49.2.4 基本的vsto项目 结构 e57 49.2.5 globals类 e60 49.2.6 事件处理 e60 49.3 构建vsto解决方案 e61 49.3.1 管理应用程序级插件 e62 49.3.2 与应用程序和文档 交互操作 e63 49.3.3 ui的自定义 e64 49.4 示例应用程序 e68 49.5 小结 e78 第50章 maf e79 50.1 maf体系结构 e79 50.1.1 管道 e80 50.1.2 发现 e81 50.1.3 激活和隔离 e82 50.1.4 协定 e83 50.1.5 生命周期 e84 50.1.6 版本问题 e85 50.2 插件示例 e86 50.2.1 插件协定 e86 50.2.2 计算器插件视图 e87 50.2.3 计算器插件适配器 e88 50.2.4 计算器插件 e90 50.2.5 计算器宿主视图 e91 50.2.6 计算机宿主适配器 e91 50.2.7 计算器宿主 e93 50.2.8 其他插件 e97 50.3 小结 e97 第51章 enterprise services e99 51.1 使用enterprise services e99 51.1.1 简史 e100 51.1.2 使用enterprise services 的场合 e100 51.1.3 重要功能 e101 51.2 创建简单的com+应用 程序 e103 51.2.1 servicedcomponent类 e103 51.2.2 程序集的属性 e103 51.2.3 创建组件 e104 51.3 部署 e106 51.3.1 自动部署 e106 51.3.2 手工部署 e106 51.3.3 创建安装软件包 e106 51.4 组件服务管理器 e107 51.5 客户端应用程序 e108 51.6 事务 e109 51.6.1 事务的特性 e109 51.6.2 事务的结果 e110 51.7 示例应用程序 e111 51.7.1 实体类 e111 51.7.2 ordercontrol组件 e113 51.7.3 orderdata组件 e114 51.7.4 orderlinedata组件 e116 51.7.5 客户端应用程序 e117 51.8 集成wcf和enterprise services e118 51.8.1 wcf服务外观 e118 51.8.2 客户端应用程序 e122 51.9 小结 e123 第52章 目录服务 e125 52.1 active directory的 体系结构 e126 52.1.1 active directory的 功能 e126 52.1.2 active directory的 概念 e126 52.1.3 active directory数据 的特征 e129 52.1.4 指定架构 e130 52.2 active directory的 管理工具 e131 52.2.1 active directory users and computers工具 e131 52.2.2 adsi edit工具 e132 52.3 active directory编程 e133 52.3.1 system.directoryservices 名称空间中的类 e134 52.3.2 绑定到directory services e134 52.3.3 获取目录项 e138 52.3.4 对象集合 e140 52.3.5 缓存 e141 52.3.6 创建新对象 e141 52.3.7 更新目录项 e142 52.3.8 访问本地adsi对象 e143 52.3.9 在active directory 中搜索 e144 52.4 搜索用户对象 e148 52.4.1 用户界面 e148 52.4.2 获取架构命名上下文 e149 52.4.3 获取user类的属性名 e149 52.4.4 搜索用户对象 e150 52.5 账户管理 e152 52.5.1 显示用户信息 e152 52.5.2 创建用户 e153 52.5.3 重置密码 e153 52.5.4 创建组 e154 52.5.5 在组中添加用户 e154 52.5.6 查找用户 e154 52.6 dsml e155 52.6.1 system.directoryservices. protocols名称空间中 的类 e156 52.6.2 用dsml搜索 active directory对象 e156 52.7 小结 e157 第53章 c#、visual basic、 c++/cli和f# e159 53.1 名称空间 e160 53.2 定义类型 e161 53.2.1 引用类型 e161 53.2.2 值类型 e162 53.2.3 类型推断 e163 53.2.4 接口 e164 53.2.5 枚举 e165 53.3 方法 e166 53.3.1 方法的参数和返回 类型 e166 53.3.2 参数修饰符 e167 53.3.3 构造函数 e168 53.3.4 属性 e170 53.3.5 对象初始值设定项 e171 53.3.6 扩展方法 e171 53.4 静态成员 e172 53.5 数组 e173 53.6 控制语句 e174 53.6.1 if语句 e174 53.6.2 条件操作符 e174 53.6.3 switch语句 e175 53.7 循环 e176 53.7.1 for语句 e176 53.7.2 while和do…while 语句 e177 53.7.3 foreach语句 e178 53.8 异常处理 e178 53.9 继承 e180 53.9.1 访问修饰符 e180 53.9.2 关键字 e181 53.10 资源管理 e183 53.10.1 idisposable接口的 实现 e183 53.10.2 using语句 e184 53.10.3 重写finalize()方法 e184 53.11 委托 e186 53.12 事件 e188 53.13 泛型 e190 53.14 linq查询 e192 53.15 c++/cli混合本地代码 和托管代码 e192 53.16 c#的特殊功能 e193 53.17 小结 e194 第54章 .net remoting e195 54.1 使用.net remoting的 原因 e195 54.2 .net remoting术语详解 e197 54.2.1 客户端通信 e198 54.2.2 服务器端通信 e199 54.3 上下文 e199 54.3.1 激活 e200 54.3.2 特性和属性 e200 54.3.3 上下文之间的通信 e201 54.4 远程对象、客户端和 服务器 e201 54.4.1 远程对象 e201 54.4.2 简单的服务器应用 程序 e202 54.4.3 简单的客户端应用 程序 e203 54.5 .net remoting体系结构 e204 54.5.1 信道 e204 54.5.2 格式化程序 e207 54.5.3 channelservices和 remotingconfiguration e207 54.5.4 对象的激活 e209 54.5.5 消息接收器 e212 54.5.6 在远程方法中传递对象 e213 54.5.7 生命周期管理 e216 54.6 配置文件 e218 54.6.1 知名对象的服务器 配置 e220 54.6.2 知名对象的客户端 配置 e220 54.6.3 客户端激活的对象的 服务器配置 e221 54.6.4 客户端激活的对象的 客户端配置 e222 54.6.5 使用配置文件的 服务器代码 e222 54.6.6 使用配置文件的 客户端代码 e223 54.6.7 客户端信道的延迟 加载 e223 54.6.8 调试配置 e224 54.6.9 配置文件中的生命 周期服务 e224 54.6.10 格式化程序提供程序 e225 54.7 在asp.net中驻留远程 服务器 e225 54.8 类、接口和soapsuds e227 54.8.1 接口 e227 54.8.2 soapsuds e227 54.9 异步远程调用 e228 54.9.1 使用委托和 .net remoting e228 54.9.2 oneway特性 e229 54.10 .net remoting的 安全性 e229 54.11 远程处理和事件 e230 54.11.1 远程对象 e231 54.11.2 事件参数 e232 54.11.3 服务器 e233 54.11.4 服务器配置文件 e233 54.11.5 事件接收器 e234 54.11.6 客户端 e234 54.11.7 客户端配置文件 e235 54.11.8 运行程序 e236 54.12 调用上下文 e236 54.13 小结 e237 第55章 web服务和asp.net e239 55.1 soap e240 55.2 wsdl e241 55.3 web服务 e242 55.3.1 提供web服务 e242 55.3.2 使用web服务 e246 55.4 扩充事件登记示例 e248 55.4.1 事件登记 web服务 e249 55.4.2 事件登记客户端 e253 55.5 使用soap标题交换 数据 e256 55.6 小结 e261 第56章 linq to sql e263 56.1 linq to sql和 visual studio 2010 e264 56.1.1 调用products表 e265 56.1.2 添加linq to sql类 e265 56.1.3 o/r设计器概述 e266 56.1.4 创建product对象 e267 56.2 对象如何映射到linq 对象上 e269 56.2.1 datacontext对象 e270 56.2.2 table[tentity]对象 e274 56.3 脱离o/r设计器工作 e274 56.3.1 创建自己的自定义 对象 e274 56.3.2 通过自定义对象和 linq查询 e275 56.3.3 通过查询限制所调用 的列 e276 56.3.4 使用列名 e277 56.3.5 创建自己的 datacontext对象 e278 56.4 自定义对象和o/r 设计器 e279 56.5 查询数据库 e280 56.5.1 使用查询表达式 e280 56.5.2 查询表达式 e281 56.5.3 使用表达式筛选 e282 56.5.4 执行连接 e282 56.5.5 分组项 e284 56.6 存储过程 e285 56.7 小结 e286 第57章 wpf 3.0 e287 57.1 hello world示例 e287 57.2 活动 e288 57.2.1 ifelseactivity e289 57.2.2 parallelactivity e290 57.2.3 callexternalmethod activity e291 57.2.4 delayactivity e291 57.2.5 listenactivity e292 57.2.6 活动执行模型 e293 57.3 自定义活动 e293 57.3.1 活动的验证 e295 57.3.2 主题和设计器 e296 57.3.3 activitytoolboxitem 和图标 e297 57.3.4 自定义复合活动 e299 57.4 工作流 e305 57.4.1 顺序工作流 e305 57.4.2 状态机工作流 e305 57.4.3 给工作流传递参数 e307 57.4.4 从工作流中返回结果 e308 57.4.5 将参数绑定到活动上 e309 57.5 工作流运行库 e310 57.6 工作流服务 e310 57.6.1 持久性服务 e312 57.6.2 跟踪服务 e313 57.6.3 自定义服务 e315 57.7 与wcf集成 e316 57.8 驻留工作流 e318 57.9 工作流设计器 e319 57.10 从wf 3.x迁移到wf 4 e320 57.10.1 把活动代码提取到 服务中 e320 57.10.2 删除代码活动 e320 57.10.3 同时运行wf 3.x 和4 e321 57.10.4 考虑把状态机迁移到 流程图上 e321 57.11 小结 e321 ................ ..................
19.48MB
C#开发典型模块大全(光盘)第二部分
2010-04-26明日科技出版的c#开发典型模块大全配套光盘,要的可以下载,因大小受限,分开上传! 第1章 认识C#及开发环境 1.1 C#概述 1.1.1 C#发展历程 1.1.2 C#语言编程环境 1.2.NETFramework2.0简介 1.2.1 什么是.NETFramework2.0 1.2.2.NETFramework2.0特性 1.3 安装集成开发环境VisualStudio2005 1.3.1 安装VisualStudio2005开发环境 1.3.2 安装MSDN帮助 1.3.3 如何使用MSDN帮助 1.3.4 利用MSDN帮助附带的示例学习编程 1.4 启动VisualStudio2005开发环境 1.4.1 启动VisualStudio2005 1.4.2 创建项目 1.5 熟悉VisualStudio2005集成开发环境 1.5.1 新特性 1.5.2 主窗口 1.5.3 菜单栏 1.5.4 工具栏 1.5.5 文档窗口 1.5.6 工具箱窗口 1.5.7 解决方案资源管理器窗口 1.5.8 属性窗口 1.5.9 代码编辑器 1.5.10 “错误列表”面板 1.5.11 “输出”面板 1.6 程序调试 1.6.1 断点操作 1.6.2 使用开始、中断和停止执行功能调试程序 1.6.3 单步执行 1.6.4 运行到程序的指定位置 第2章 QQ企业通 2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端登录模块设计 2.3.4 客户端QQ模块设计 2.3.5 客户端消息发送模块设计 2.3.6 服务器端控制台模块设计 第3章 SQL数据表提取器模块 3.1 概述 3.2 关键技术 3.2.1 如何备份数据库 3.2.2 如何还原数据库 3.2.3 如何附加数据库 3.2.4 如何分离数据库 3.2.5 设置数据库模式 3.3 设计过程 3.3.1 主窗体 3.3.2 获取服务器名称 3.3.3 获取所有数据库 3.3.4 获取所有数据表 3.3.5 备份数据库 3.3.6 还原数据库 3.3.7 附加数据库 3.3.8 分离数据库 3.3.9 导出表结构 3.3.10 导出数据 第4章 万能搜索模块 4.1 设计思路 4.2 关键技术 4.2.1 如何制作一个接口程序 4.2.2 实现接口程序的信息互传 4.2.3 如何将接口程序加载到其他程序中 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL语句 4.3.5 主程序获得接口信息 第5章 万能打印模块 5.1 设计思路 5.2 关键技术 5.2.1 打印设置(PrintDocument类) 5.2.2 打印预览对话框(PrintPreviewDialog) 5.2.3 打印对话框(PrintDialog) 5.2.4 获取指定颜色值和字体样式 5.2.5 DataGridView控件的相关应用 5.3 设计过程 5.3.1 打印信息的设置 5.3.2 表格样式的设置 5.3.3 打印类的设置 5.3.4 打印数据信息 第6章 决策分析模块 6.1 设计思路 6.2 关键技术 6.2.1 游标的基本操作 6.2.2 存储过程的基本操作 6.2.3 透视表的基本概念 6.2.4 统计表的基本操作 6.2.5 单击显示右键菜单 6.3 设计过程 6.3.1 主窗体的初始化 6.3.2 透视表的筛选 6.3.3 透视表的设计 6.3.4 统计表的设计 第7章 自定义图表控件 7.1 设计思路 7.2 关键技术 7.2.1 控件的生成 7.2.2 如何在项目中添加控件 7.2.3 在“属性”对话框中添加属性 7.2.4 用GDI+绘制图形 7.2.5 如何在控件上绘制图形 7.2.6 获取扇形外弧中心点的位置 7.3 设计过程 7.3.1 向自定义控件中添加属性 7.3.2 获取绘制图表的初始值数据 7.3.3 绘制标签框 7.3.4 绘制图表中的表格 7.3.5 绘制条形图 7.3.6 绘制面形图 7.3.7 绘制饼形图 第8章 电子邮件收发模块 8.1 概述 8.2 关键技术 8.2.1 Base64编码格式 8.2.2 SMTP服务 8.2.3 POP3协议 8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 数据库设计 8.3.2 系统登录 8.3.3 邮件发送实现 8.3.4 为邮件上传多个附件 8.3.5 邮件接收实现 8.3.6 查看邮件详细信息 8.3.7 下载附件的实现 8.3.8 删除邮件实现 8.3.9 用户管理 第9章 短信群发模块 9.1 设计思路 9.2 关键技术 9.2.1 短信猫中API函数的使用 9.2.2 短信猫中的短信接收格式 9.2.3 窗体间的互操作 9.2.4 锁定模块主窗体 9.2.5 使用ADO.NET连接Access数据库 9.3 设计过程 9.3.1 数据库设计 9.3.2 群发短信实现 9.3.3 已发送短信管理 9.3.4 接收短信实现 9.3.5 常用联系人管理 9.3.6 常用短语管理 第10章 桌面精灵模块 10.1 概述 10.2 关键技术 10.2.1 阴阳历转换算法 10.2.2 调用系统API实现鼠标穿透效果 10.2.3 修改注册表控制程序开机自启动 10.2.4 通过控制窗体透明度实现日历透明显示效果 10.2.5 拖动无标题栏窗体 10.2.6 将窗体的关闭位置写入到注册表中 10.2.7 将程序图标写入到托盘 10.3 设计过程 10.3.1 桌面精灵模块公共类设计 10.3.2 当前日期的农历、天干地支年、节日及星座显示 10.3.3 定时提醒的实现 10.3.4 日历窗体效果控制 10.3.5 转到某天、某周、某月及某年的实现 10.3.6 节日管理 10.3.7 提醒管理 第11章 文件批量处理器 11.1 概述 11.2 关键技术 11.2.1 文件流技术 11.2.2 文件解压缩技术 11.2.3 获取系统文件及文件夹图标 11.2.4 获取指定目录下的所有文件及文件夹 11.2.5 Word操作技术 11.2.6 进度条的显示 11.2.7 对ListView控件中的项进行排序 11.3 设计过程 11.3.1 主窗体预览 11.3.2 批量复制、剪切文件 11.3.3 批量复制、剪切文件夹 11.3.4 批量重命名文件 11.3.5 批量删除文件及文件夹 11.3.6 搜索文件及文件夹 11.3.7 批量压缩、解压文件 11.3.8 分割、合并文件 第12章 图片管理工具模块 12.1 概述 12.2 关键技术 12.2.1 上下移动ListBox选中项 12.2.2 将文件复制到剪切板 12.2.3 格式转换 12.2.4 图片幻灯片 12.2.5 图片旋转 12.3 设计过程 12.3.1 主窗体 12.3.2 打开图片目录 12.3.3 图片格式转换 12.3.4 设为桌面背景 12.3.5 图片特效 12.3.6 图片调节 12.3.7 图片水印 12.3.8 幻灯片放映 12.3.9 图片打印 第13章 FTP文件管理模块 13.1 设计思路 13.2 关键技术 13.2.1 架设FTP服务器 13.2.2 登录FTP服务器 13.2.3 获取服务器上文件的大小 13.2.4 向FTP服务器发送命令 13.2.5 调用系统API 13.3 设计过程 13.3.1 主窗体设计 13.3.2 登录FTP服务器 13.3.3 获取本地磁盘 13.3.4 获取指定磁盘中的文件 13.3.5 获取本地磁盘中文件的图标 13.3.6 获取FTP服务器中的所有文件 13.3.7 批量上传文件 13.3.8 批量下载文件 13.3.9 删除FTP中的文件或文件夹 第14章 魔法兔子模块 14.1 概述 14.2 关键技术 14.2.1 获取进程信息 14.2.2 获取计算机信息 14.2.3 修改注册表 14.3 设计过程 14.3.1 主窗体 14.3.2 功能菜单设计 14.3.3 系统检测 14.3.4 系统优化 14.3.5 超级工具 14.3.6 实用工具 14.3.7 任务管理器 14.3.8 选项设置 第15章 学生考试模块 15.1 设计思路 15.2 关键技术 15.2.1 获取试题数目 15.2.2 验证用户名和密码 15.2.3 随机抽取试题 15.2.4 自动评分 15.3 设计过程 15.3.1 数据库设计 15.3.2 公共类设计 15.3.3 登录验证 15.3.4 主窗体实现 15.3.5 开始考试 15.3.6 修改密码 15.3.7 分数查询 15.3.8 管理员界面 15.3.9 用户管理 15.3.10 成绩查询 15.3.11 考试设置 15.3.12 添加试题 15.3.13 修改试题 第16章 网页浏览器模块 16.1 概述 16.2 关键技术 16.2.1 网页浏览器核心控件 16.2.2 网页多页面显示 16.2.3 获取网页源码 16.3 设计过程 16.3.1 主窗体 16.3.2 查看网页源码 16.3.3 添加到收藏夹 16.3.4 整理收藏夹 第17章 电话客服管理模块 17.1 设计思路 17.2 关键技术 17.2.1 语音卡中的API函数 17.2.2 硬件语音卡驱动分析 17.2.3 窗体间传值 17.2.4 导航菜单的制作 17.3 设计过程 17.3.1 数据库设计 17.3.2 模块主窗体设计 17.3.3 自动语音处理 17.3.4 通话管理实现 17.3.5 员工管理实现 17.3.6 产品类别管理 第18章 多媒体播放器 18.1 设计思路 18.2 关键技术 18.2.1 窗体间的信息传递 18.2.2 AxWindowsMediaPlayer控件的相关应用 18.2.3 在列表框中动态移动选中的项 18.2.4 如何在文件夹中遍历文件 18.2.5 如何实现播放进度条 18.3 设计过程 18.3.1 磁性窗体的设置 18.3.2 播放窗体的设计 18.3.3 列表窗体的设计 18.3.4 歌词窗体的设计 第19章 屏幕录像模块 19.1 概述 19.2 关键技术 19.2.1 如何抓取屏幕 19.2.2 创建AVI文件 19.2.3 向AVI文件中添加视频 19.2.4 分解AVI文件 19.2.5 设置快捷键 19.3 设计过程 19.3.1 主窗体设计 19.3.2 抓图功能 19.3.3 选项设置 19.3.4 屏幕录像 19.3.5 视频分割 第20章 EXE文件加密器 20.1 设计思路 20.2 关键技术 20.2.1 FileStream对象 20.2.2 文件的读写操作 20.2.3 如何获取两个日期的月份差 20.2.4 获取两个日期的相差天数 20.2.5 载取字符串中的指定字符 20.3 设计过程 20.3.1 获取加密字符串的信息 20.3.2 对生成后的数据进行加密 20.3.3 对EXE文件进行加密 20.3.4 解密文件的设置 第21章 视频监控模块 21.1 设计思路 21.2 关键技术 21.2.1 认识视频监控卡 21.2.2 视频监控卡中API函数的使用 21.2.3 Pelco-D协议 21.2.4 串口通信技术 21.2.5 WMI类的使用 21.2.6 注册表技术 21.3 设计过程 21.3.1 视频监控实现 21.3.2 云台控制 21.3.3 色彩控制 21.3.4 图像抓拍及生成监控录像 21.3.5 定时录像设置 21.3.6 录像回放 21.3.7 注册程序 21.3.8 实时监控软件运行时间及磁盘空间 第22章 网络五子棋游戏 22.1 设计思路 22.2 关键技术 22.2.1 在下拉列表中绘制图片 22.2.2 UDP协议 22.2.3 用Socket实现信息传递的必备条件 22.2.4 自定义事件的设置 22.2.5 动态按钮的设置 22.3 设计过程 22.3.1 类库的设计 22.3.2 客户端注册模块设计 22.3.3 客户端登录模块设计 22.3.4 五子棋大厅的设计 22.3.5 对决窗体的设计 22.3.6 网络五子棋服务器窗体的设计 第23章 在线升级模块 23.1 设计思路 23.2 关键技术 23.2.1 FTP上传下载技术 23.2.2 XML文件操作 23.2.3 INI文件的读写 23.2.4 动态生成版本面板 23.2.5 使用Hashtable(哈希表)记录版本号及更新信息 23.3 类库设计过程 23.4 服务器端设计过程 23.4.1 服务器端主窗体预览 23.4.2 连接FTP服务器 23.4.3 向FTP服务器上传新版本 23.5 客户端设计过程 23.5.1 启动客户端时检测是否有新版本 23.5.2 从FTP服务器下载指定版本 23.5.3 定时升级设置 第24章 Windows应用程序打包与部署境 24.1 WindowsInstaller简介 24.2 Windows应用程序部署 24.2.1 创建部署项目 24.2.2 可选的部署功能 24.3 安装及卸载Windows程序 24.3.1 在本地计算机上安装 24.3.2 部署到其他计算机 24.3.3 卸载安装应用程序
10.0MB
《C#高级编程第七版》中文(ProfessionalC#4.0and.NET4)[共十卷][VOL6]
2011-05-26该版本已添加目录标签 并修正了一些错误 中文名: C#高级编程 第七版 原名: Professional C# 4.0 and .NET 4 别名: C#高级编程(第7版) 作者: (美)Christian Nagel Bill Evjen Jay Glynn.译者: 无.资源格式: PDF 版本: 影印版 出版社: worx.书号: ISBN:9787302239376.发行时间: 2010年 地区: 大陆 语言: 中文 本书是Wrox畅销书,C#经典名著!2009年度全行业优秀畅销书。自第一版出版以来,都是国内读者的普遍好评,累计销量近十万册。 《C#高级编程(第7版)》的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写 Windows应用程序和ASP.NET Web应用程序。 本书几乎涵盖C#语言的所有功能,对于C#初学者和有经验的程序员是值得大力推荐的书籍。实践证明,本书是关于C# 和 Visual Studio的一本全面 而且权威的参考书。 新的C# 4对于在Visual Studio 2010中编写代码是必不可少的。这本实用指南强调,C#是编写.NET 4应用程序的首选语言。《C#高级编程(第7版)》 的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写Windows应用程序和ASP.NET Web应用程序。 本书主要内容 ◆ 回顾.NET体系结构、对象、泛型、继承、数组、运算符、类型强制转换、委托、事件、Lambda表达式等 ◆ 详细论述C#中的动态对象、命名参数和可选参数、COM专用的交互操作功能、安全类型变体 ◆ 阐述.NET 4的新增功能、WF 4、ADO.NET 数据服务、MEF、并行任务库和PLINQ ◆ 深入探讨LINQ、WCF、WPF、流文档和固定文档及Silverlight等功能强大的技术 ◆ 回顾ASP.NET编程,介绍ASP.NET MVC和ASP.NET 动态数据等新功能 ◆ 讨论使用WCF、MSMQ、点对点和联合进行通信 目录: 第ⅰ部分 c# 语 言 第1章 .net体系结构 3 1.1 c#与.net的关系 3 1.2 公共语言运行库 4 1.2.1 平台无关性 4 1.2.2 提高性能 4 1.2.3 语言的互操作性 5 1.3 中间语言 6 1.3.1 面向对象和接口的支持 6 1.3.2 不同的值类型和引用类型 7 1.3.3 强数据类型化 8 1.3.4 通过异常处理错误 12 1.3.5 特性的使用 13 1.4 程序集 13 1.4.1 私有程序集 14 1.4.2 共享程序集 14 1.4.3 反射 14 1.4.4 并行编程 15 1.5 .net framework类 15 1.6 名称空间 16 .1.7 用c#创建.net应用程序 16 1.7.1 创建asp.net应用程序 16 1.7.2 创建windows窗体 18 1.7.3 使用wpf 18 1.7.4 windows控件 19 1.7.5 windows服务 19 1.7.6 wcf 19 1.7.7 windows wf 19 1.8 c#在.net企业体系结构 中的作用 19 1.9 小结 21 第2章 核心c# 23 2.1 第一个c#程序 23 2.1.1 代码 24 2.1.2 编译并运行程序 24 2.1.3 详细介绍 25 2.2 变量 26 2.2.1 变量的初始化 27 2.2.2 类型推断 28 2.2.3 变量的作用域 29 2.2.4 常量 31 2.3 预定义数据类型 32 2.3.1 值类型和引用类型 32 2.3.2 cts类型 33 2.3.3 预定义的值类型 33 2.3.4 预定义的引用类型 36 2.4 流控制 38 2.4.1 条件语句 38 2.4.2 循环 42 2.4.3 跳转语句 45 2.5 枚举 46 2.6 名称空间 47 2.6.1 using语句 49 2.6.2 名称空间的别名 49 2.7 main()方法 50 2.7.1 多个main()方法 50 2.7.2 给main()方法传递参数 52 2.8 有关编译c#文件的更多内容 52 2.9 控制台i/o 54 2.10 使用注释 56 2.10.1 源文件中的内部注释 56 2.10.2 xml文档 56 2.11 c#预处理器指令 58 2.11.1 #define和 #undef 59 2.11.2 #if, #elif, #else和#endif 59 2.11.3 #warning和 # error 60 2.11.4 #region和#endregion 61 2.11.5 #line 61 2.11.6 #pragma 61 2.12 c#编程规则 62 2.12.1 关于标识符的规则 62 2.12.2 用法约定 63 2.13 小结 68 第3章 对象和类型 69 3.1 类和结构 69 3.2 类 70 3.2.1 数据成员 70 3.2.2 函数成员 71 3.2.3 只读字段 83 3.3 匿名类型 84 3.4 结构 85 3.4.1 结构是值类型 86 3.4.2 结构和继承 87 3.4.3 结构的构造函数 87 3.5 部分类 87 3.6 静态类 89 3.7 object类 89 3.7.1 system.object()方法 90 3.7.2 tostring()方法 90 3.8 扩展方法 92 3.9 小结 93 第4章 继承 95 4.1 继承的类型 95 4.1.1 实现继承和接口继承 95 4.1.2 多重继承 95 4.1.3 结构和类 96 4.2 实现继承 96 4.2.1 虚方法 97 4.2.2 隐藏方法 98 4.2.3 调用函数的基类版本 99 4.2.4 抽象类和抽象函数 100 4.2.5 密封类和密封方法 100 4.2.6 派生类的构造函数 101 4.3 修饰符 106 4.3.1 可见性修饰符 106 4.3.2 其他修饰符 106 4.4 接口 107 4.4.1 定义和实现接口 108 4.4.2 派生的接口 111 4.5 小结 113 第5章 泛型 115 5.1 概述 115 5.1.1 性能 116 5.1.2 类型安全 117 5.1.3 二进制代码的重用 117 5.1.4 代码的扩展 117 5.1.5 命名约定 118 5.2 创建泛型类 118 5.3 泛型类的功能 122 5.3.1 默认值 123 5.3.2 约束 123 5.3.3 继承 126 5.3.4 静态成员 127 5.4 泛型接口 127 5.4.1 协变和抗变 128 5.4.2 泛型接口的协变 129 5.4.3 泛型接口的抗变 130 5.5 泛型结构 131 5.6 泛型方法 134 5.6.1 泛型方法示例 134 5.6.2 带约束的泛型方法 135 5.6.3 带委托的泛型方法 136 5.6.4 泛型方法规范 137 5.7 小结 138 第6章 数组 139 6.1 简单数组 139 6.1.1 数组的声明 139 6.1.2 数组的初始化 139 6.1.3 访问数组元素 140 6.1.4 使用引用类型 141 6.2 多维数组 142 6.3 锯齿数组 143 6.4 array类 144 6.4.1 创建数组 145 6.4.2 复制数组 146 6.4.3 排序 147 6.5 数组作为参数 150 6.5.1 数组协变 151 6.5.2 arraysegment[t] 151 6.6 枚举 152 6.6.1 ienumerator接口 152 6.6.2 foreach语句 153 6.6.3 yield语句 153 6.7 元组 158 6.8 结构比较 159 6.9 小结 162 第7章 运算符和类型强制转换 163 7.1 运算符 163 7.1.1 运算符的简化操作 165 7.1.2 运算符的优先级 169 7.2 类型的安全性 169 7.2.1 类型转换 170 7.2.2 装箱和拆箱 173 7.3 比较对象的相等性 174 7.3.1 比较引用类型的相等性 174 7.3.2 比较值类型的相等性 175 7.4 运算符重载 176 7.4.1 运算符的工作方式 177 7.4.2 运算符重载的示例: vector结构 178 7.5 用户定义的类型强制转换 185 7.5.1 实现用户定义的类型 强制转换 186 7.5.2 多重类型强制转换 192 7.6 小结 195 第8章 委托、lambda表达式 和事件 197 8.1 委托 197 8.1.1 声明委托 198 8.1.2 使用委托 199 8.1.3 简单的委托示例 202 8.1.4 action[t]和func[t] 委托 204 8.1.5 bubblesorter示例 204 8.1.6 多播委托 207 8.1.7 匿名方法 210 8.2 lambda表达式 211 8.2.1 参数 212 8.2.2 多行代码 212 8.2.3 lambda表达式外部的 变量 213 8.3 事件 214 8.3.1 事件发布程序 214 8.3.2 事件侦听器 216 8.3.3 弱事件 217 8.4 小结 220 第9章 字符串和正则表达式 221 9.1 system.string类 221 9.1.1 创建字符串 222 9.1.2 stringbuilder成员 225 9.1.3 格式字符串 226 9.2 正则表达式 231 9.2.1 正则表达式概述 232 9.2.2 regularexpressions playaround示例 233 9.2.3 显示结果 235 9.2.4 匹配、组合和捕获 237 9.3 小结 238 第10章 集合 239 10.1 集合接口和类型 239 10.2 列表 240 10.2.1 创建列表 241 10.2.2 只读集合 250 10.3 队列 250 10.4 栈 254 10.5 链表 256 10.6 有序列表 261 10.7 字典 262 10.7.1 键的类型 263 10.7.2 字典示例 264 10.7.3 lookup类 268 10.7.4 有序字典 269 10.8 集 269 10.9 可观察的集合 271 10.10 位数组 272 10.10.1 bitarray类 273 10.10.2 bitvector32结构 275 10.11 并发集合 277 10.12 性能 279 10.13 小结 281 第11章 linq 283 11.1 linq概述 283 11.1.1 列表和实体 283 11.1.2 linq查询 287 11.1.3 扩展方法 288 11.1.4 推迟查询的执行 289 11.2 标准的查询操作符 291 11.2.1 筛选 293 11.2.2 用索引筛选 293 11.2.3 类型筛选 294 11.2.4 复合的from子句 294 11.2.5 排序 295 11.2.6 分组 296 11.2.7 对嵌套的对象分组 297 11.2.8 连接 298 11.2.9 集合操作 300 11.2.10 合并 301 11.2.11 分区 302 11.2.12 聚合操作符 303 11.2.13 转换 304 11.2.14 生成操作符 305 11.3 并行linq 306 11.3.1 并行查询 306 11.3.2 分区器 307 11.3.3 取消 307 11.4 表达式树 308 11.5 linq提供程序 311 11.6 小结 311 第12章 动态语言扩展 313 12.1 dlr 313 12.2 dynamic类型 313 12.3 包含dlr scriptruntime 318 12.4 dynamicobject和 expandoobject 321 12.4.1 dynamicobject 321 12.4.2 expandoobject 323 12.5 小结 324 第13章 内存管理和指针 325 13.1 后台内存管理 325 13.1.1 值数据类型 325 13.1.2 引用数据类型 327 13.1.3 垃圾回收 328 13.2 释放非托管的资源 330 13.2.1 析构函数 330 13.2.2 idisposable接口 331 13.2.3 实现idisposable接口 和析构函数 332 13.3 不安全的代码 334 13.3.1 用指针直接访问内存 334 13.3.2 指针示例: pointerplayground 343 13.3.3 使用指针优化性能 347 13.4 小结 350 第14章 反射 351 14.1 自定义特性 351 14.1.1 编写自定义特性 352 14.1.2 自定义特性示例: whatsnewattributes 355 14.2 反射 358 14.2.1 system.type类 358 14.2.2 typeview示例 360 14.2.3 assembly类 362 14.2.4 完成whatsnew attributes示例 364 14.3 小结 368 第15章 错误和异常 369 15.1 异常类 369 15.2 捕获异常 371 15.2.1 实现多个catch块 373 15.2.2 在其他代码中捕获异常 376 15.2.3 system.exception属性 376 15.2.4 没有处理异常时所发生 的情况 377 15.2.5 嵌套的 try块 378 15.3 用户定义的异常类 379 15.3.1 捕获用户定义的异常 380 15.3.2 抛出用户定义的异常 382 15.3.3 定义用户定义的异常类 385 15.4 小结 387 第ⅱ部分 visual studio 第16章 visual studio 2010 391 16.1 使用visual studio 2010 391 16.1.1 创建项目 395 16.1.2 解决方案和项目的区别 401 16.1.3 windows应用程序代码 403 16.1.4 项目的浏览和编码 404 16.1.5 生成项目 411 16.1.6 调试代码 415 16.2 重构工具 418 16.3 面向多个版本的 .net framework 420 16.4 wpf、wcf、wf等 421 16.4.1 在visual studio 2010 中构建wpf应用程序 421 16.4.2 在visual studio 2010 中构建wf应用程序 423 16.5 小结 424 第17章 部署 425 17.1 部署的规划 425 17.1.1 部署选项 426 17.1.2 部署要求 426 17.1.3 部署.net运行库 427 17.2 简单的部署选项 427 17.2.1 xcopy部署 428 17.2.2 xcopy和web 应用程序 428 17.2.3 发布web站点 429 17.3 visual studio 2010安装 和部署项目 429 17.3.1 windows installer 430 17.3.2 创建安装程序 430 17.4 clickonce 437 17.4.1 clickonce操作 437 17.4.2 发布clickonce 应用程序 438 17.4.3 clickonce设置 438 17.4.4 clickonce文件的 应用程序缓存 439 17.4.5 应用程序的安全性 439 17.5 visual studio 2010 高级选项 440 17.5.1 文件系统编辑器 440 17.5.2 注册表编辑器 440 17.5.3 文件类型编辑器 440 17.5.4 用户界面编辑器 441 17.5.5 自定义动作编辑器 442 17.5.6 launch conditions 编辑器 443 17.6 小结 444 第ⅲ部分 基 础 第18章 程序集 447 18.1 程序集的含义 447 18.1.1 程序集的功能 448 18.1.2 程序集的结构 448 18.1.3 程序集清单 449 18.1.4 名称空间、程序集 和组件 449 18.1.5 私有程序集和共享 程序集 449 18.1.6 附属程序集 450 18.1.7 查看程序集 450 18.2 创建程序集 451 18.2.1 创建模块和程序集 451 18.2.2 程序集的特性 452 18.2.3 动态加载和创建 程序集 454 18.3 应用程序域 457 18.4 共享程序集 461 18.4.1 强名 462 18.4.2 使用强名获得完整性 462 18.4.3 全局程序集缓存 463 18.4.4 创建共享程序集 463 18.4.5 创建强名 464 18.4.6 安装共享程序集 465 18.4.7 使用共享程序集 465 18.4.8 程序集的延迟签名 466 18.4.9 引用 467 18.4.10 本机映像生成器 468 18.5 配置.net应用程序 469 18.5.1 配置类别 469 18.5.2 绑定程序集 470 18.6 版本问题 471 18.6.1 版本号 472 18.6.2 通过编程方式获取版本 472 18.6.3 绑定到程序集版本 473 18.6.4 发行者策略文件 474 18.6.5 运行库的版本 475 18.7 小结 476 第19章 检测 477 19.1 代码协定 477 19.1.1 前提条件 479 19.1.2 后置条件 480 19.1.3 常量 481 19.1.4 接口的协定 481 19.2 跟踪 483 19.2.1 跟踪源 484 19.2.2 跟踪开关 485 19.2.3 跟踪侦听器 486 19.2.4 筛选器 488 19.2.5 相关性 489 19.3 事件日志 492 19.3.1 事件日志体系结构 493 19.3.2 事件日志类 494 19.3.3 创建事件源 494 19.3.4 写入事件日志 495 19.3.5 资源文件 496 19.4 性能监控 500 19.4.1 性能监控类 500 19.4.2 性能计数器生成器 500 19.4.3 添加performance counter组件 503 19.4.4 perfmon.exe 505 19.5 小结 506 第20章 线程、任务和同步 507 20.1 概述 507 20.2 异步委托 508 20.2.1 投票 508 20.2.2 等待句柄 509 20.2.3 异步回调 510 20.3 thread类 512 20.3.1 给线程传递数据 513 20.3.2 后台线程 514 20.3.3 线程的优先级 515 20.3.4 控制线程 515 20.4 线程池 516 20.5 任务 517 20.5.1 启动任务 517 20.5.2 连续的任务 518 20.5.3 任务层次结构 519 20.5.4 任务的结果 520 20.6 parallel类 521 20.6.1 用parallel.for() 方法循环 521 20.6.2 使用parallel.foreach() 方法循环 523 20.6.3 通过parallel.invoke() 方法调用多个方法 524 20.7 取消架构 524 20.7.1 parallel.for()方法 的取消 524 20.7.2 任务的取消 526 20.8 线程问题 527 20.8.1 争用条件 527 20.8.2 死锁 530 20.9 同步 532 20.9.1 lock语句和线程安全 532 20.9.2 interlocked类 538 20.9.3 monitor类 539 20.9.4 spinlock结构 540 20.9.5 waithandle基类 540 20.9.6 mutex类 541 20.9.7 semaphore类 542 20.9.8 events类 544 20.9.9 barrier类 547 20.9.10 readerwriterlockslim 类 549 20.10 timer类 552 20.11 基于事件的异步模式 554 20.11.1 backgroundworker 类 554 20.11.2 启用取消功能 557 20.11.3 启用进度功能 558 20.11.4 创建基于事件的异步 组件 559 20.12 小结 563 第21章 安全性 565 21.1 身份验证和授权 565 21.1.1 标识和principal 565 21.1.2 角色 567 21.1.3 声明基于角色的安全性 567 21.1.4 客户端应用程序服务 568 21.2 加密 573 21.2.1 签名 575 21.2.2 交换密钥和安全传输 576 21.3 资源的访问控制 579 21.4 代码访问安全性 582 21.4.1 第2级安全透明性 582 21.4.2 权限 583 21.5 使用证书发布代码 588 21.6 小结 588 第22章 本地化 591 22.1 system.globalization 名称空间 591 22.1.1 unicode问题 592 22.1.2 区域性和区域 592 22.1.3 使用区域性 596 22.1.4 排序 600 22.2 资源 602 22.2.1 创建资源文件 602 22.2.2 资源文件生成器 602 22.2.3 resourcewriter 603 22.2.4 使用资源文件 604 22.2.5 system.resources 名称空间 607 22.3 使用visual studio的 windows窗体本地化 607 22.3.1 通过编程方式修改 区域性 612 22.3.2 使用自定义资源文件 613 22.3.3 资源的自动回退 614 22.3.4 外包翻译 615 22.4 用asp.net本地化 615 22.5 用wpf本地化 617 22.5.1 用于wpf的.net资源 618 22.5.2 xaml资源字典 619 22.6 自定义资源读取器 622 22.6.1 创建databaseresource reader类 623 22.6.2 创建databaseresource set类 625 22.6.3 创建databaseresource manager类 625 22.6.4 databaseresourcereader 的客户端应用程序 626 22.7 创建自定义区域性 626 22.8 小结 628 第23章 system.transactions 629 23.1 概述 629 23.1.1 事务处理阶段 630 23.1.2 acid属性 630 23.2 数据库和实体类 631 23.3 传统的事务 633 23.3.1 ado.net事务 633 23.3.2 system.enterprise services 634 23.4 system.transactions 635 23.4.1 可提交的事务 636 23.4.2 事务处理的升级 638 23.4.3 依赖事务 640 23.4.4 环境事务 642 23.5 隔离级别 649 23.6 自定义资源管理器 650 23.7 windows 7和windows server 2008的事务 656 23.8 小结 660 第24章 网络 661 24.1 webclient类 661 24.1.1 下载文件 662 24.1.2 基本的webclient示例 662 24.1.3 上传文件 663 24.2 webrequest类和 webresponse类 664 24.2.1 身份验证 666 24.2.2 使用代理 666 24.2.3 异步页面请求 666 24.3 把输出结果显示为 html页面 667 24.3.1 从应用程序中进行 简单的web浏览 667 24.3.2 启动internet explorer 实例 669 24.3.3 给应用程序提供更多 的ie类型特性 669 24.3.4 使用webbrowser控件 打印 674 24.3.5 显示请求页面的代码 674 24.3.6 webrequest类 和webresponse类的 层次结构 676 24.4 实用工具类 676 24.4.1 uri 676 24.4.2 ip地址和dns名称 677 24.5 较低层的协议 679 24.5.1 使用smtpclient 680 24.5.2 使用tcp类 682 24.5.3 tcpsend和tcpreceive 示例 682 24.5.4 tcp和udp 684 24.5.5 udp类 684 24.5.6 socket类 685 24.6 小结 689 第25章 windows服务 691 25.1 windows服务 691 25.2 windows服务的体系结构 692 25.2.1 服务程序 692 25.2.2 服务控制程序 694 25.2.3 服务配置程序 694 25.2.4 windows服务的类 694 25.3 创建windows服务程序 694 25.3.1 创建服务的核心功能 695 25.3.2 quoteclient示例 698 25.3.3 windows服务程序 699 25.3.4 线程和服务 703 25.3.5 服务的安装 704 25.3.6 安装程序 704 25.4 服务的监视和控制 708 25.4.1 mmc管理单元 708 25.4.2 net.exe实用程序 709 25.4.3 sc.exe实用程序 710 25.4.4 visual studio server explorer 710 25.4.5 编写自定义 servicecontroller类 710 25.5 故障排除和事件日志 718 25.6 小结 719 第26章 互操作性 721 26.1 .net和com 721 26.1.1 元数据 722 26.1.2 释放内存 722 26.1.3 接口 722 26.1.4 方法的绑定 724 26.1.5 数据类型 724 26.1.6 注册 724 26.1.7 线程 725 26.1.8 错误处理 726 26.1.9 事件 727 26.2 编组 727 26.3 从.net客户端中使用 com组件 728 26.3.1 创建com组件 728 26.3.2 创建rcw 734 26.3.3 使用rcw 735 26.3.4 使用com服务器和 动态语言扩展 736 26.3.5 线程问题 737 26.3.6 添加连接点 737 26.4 从com客户端中使用 .net组件 739 26.4.1 ccm 740 26.4.2 创建.net组件 740 26.4.3 创建类型库 741 26.4.4 com互操作特性 743 26.4.5 com注册 745 26.4.6 创建com客户端 应用程序 746 26.4.7 添加连接点 747 26.4.8 用sink对象创建 客户端 748 26.5 平台调用 750 26.6 小结 754 第27章 核心xaml 755 27.1 概述 755 27.1.1 元素映射到.net 对象上 756 27.1.2 使用自定义.net类 757 27.1.3 把特性用作属性 759 27.1.4 把特性用作元素 759 27.1.5 基本的.net类型 760 27.1.6 集合 760 27.1.7 构造函数 761 27.2 依赖属性 761 27.2.1 创建依赖类型 762 27.2.2 强制值回调 763 27.2.3 值变更回调和事件 764 27.2.4 事件的冒泡和隧道 764 27.3 附加属性 767 27.4 标记扩展 770 27.5 创建自定义标记扩展 770 27.6 xaml定义的标记扩展 772 27.7 读写xaml 772 27.8 小结 773 第28章 managed extensibility framework 775 28.1 mef的体系结构 775 28.2 协定 782 28.3 导出 783 28.3.1 导出属性和方法 787 28.3.2 导出元数据 789 28.4 导入 791 28.5 容器和出口提供程序 794 28.6 类别 797 28.7 小结 798 第29章 文件和注册表操作 799 29.1 管理文件系统 799 29.1.1 表示文件和文件夹 的.net类 800 29.1.2 path类 803 29.1.3 fileproperties示例 803 29.2 移动、复制和删除文件 808 29.2.1 filepropertiesandmovement 示例 808 29.2.2 filepropertiesandmovement 示例的代码 809 29.3 读写文件 812 29.3.1 读取文件 812 29.3.2 写入文件 814 29.3.3 流 815 29.3.4 缓存的流 816 29.3.5 使用filestream类读写 二进制文件 816 29.3.6 读写文本文件 821 29.4 映射内存的文件 827 29.5 读取驱动器信息 829 29.6 文件的安全性 831 29.6.1 从文件中读取acl 831 29.6.2 从目录中读取acl 832 29.6.3 添加和删除文件中 的acl项 833 29.7 读写注册表 835 29.7.1 注册表 835 29.7.2 .net注册表类 837 29.8 读写独立存储器 839 29.9 小结 844 第ⅳ部分 数 据 第30章 核心ado.net 847 30.1 ado.net概述 847 30.1.1 名称空间 848 30.1.2 共享类 848 30.1.3 数据库专用的类 849 30.2 使用数据库连接 850 30.2.1 管理连接字符串 851 30.2.2 高效地使用连接 852 30.2.3 事务 854 30.3 命令 855 30.3.1 执行命令 856 30.3.2 调用存储过程 860 30.4 快速数据访问: 数据读取器 862 30.5 管理数据和关系: dataset类 865 30.5.1 数据表 866 30.5.2 数据列 866 30.5.3 数据关系 871 30.5.4 数据约束 872 30.6 xml架构:用xsd 生成代码 875 30.7 填充dataset类 881 30.7.1 用数据适配器填充 dataset 882 30.7.2 从xml中填充 dataset类 883 30.8 持久化dataset类的修改 883 30.8.1 通过数据适配器进行 更新 883 30.8.2 写入xml输出结果 886 30.9 使用ado.net 887 30.9.1 分层开发 887 30.9.2 生成sql server的键 888 30.9.3 命名约定 891 30.10 小结 892 第31章 ado.net entity framework 893 31.1 ado.net entity framework概述 893 31.2 entity framework映射 894 31.2.1 逻辑层 895 31.2.2 概念层 897 31.2.3 映射层 898 31.3 entity client 899 31.3.1 连接字符串 900 31.3.2 entity sql 900 31.4 实体 901 31.5 对象上下文 904 31.6 关系 906 31.6.1 一个层次结构一个表 907 31.6.2 一种类型一个表 908 31.6.3 懒惰加载、延迟加载 和预先加载 909 31.7 对象查询 910 31.8 更新 913 31.8.1 对象跟踪 913 31.8.2 改变信息 914 31.8.3 附加和分离实体 916 31.8.4 存储实体的变化 916 31.9 linq to entities 917 31.10 小结 918 第32章 数据服务 919 32.1 概述 919 32.2 包含clr对象的自定义 宿主 920 32.2.1 clr对象 920 32.2.2 数据模型 922 32.2.3 数据服务 923 32.2.4 驻留服务 923 32.2.5 其他服务操作 924 32.3 http客户端应用程序 925 32.4 使用wcf数据服务和 ado.net entity framework 929 32.4.1 asp.net宿主和edm 929 32.4.2 使用system.data .service.client的.net 应用程序 931 32.5 小结 938 第33章 处理xml 939 33.1 .net支持的xml标准 940 33.2 system.xml名称空间 940 33.3 使用system.xml类 941 33.4 读写流格式的xml 942 33.4.1 使用 xmlreader类 942 33.4.2 使用xmlreader类进行 验证 946 33.4.3 使用xmlwriter类 947 33.5 在.net中使用dom 949 33.6 使用xpathnavigator类 954 33.6.1 system.xml.xpath 名称空间 954 33.6.2 system.xml.xsl 名称空间 959 33.6.3 调试xslt 963 33.7 xml和ado.net 965 33.7.1 将ado.net数据 转换为xml文档 965 33.7.2 把xml文档转换为 ado.net数据 970 33.8 在xml中序列化对象 972 33.9 linq to xml和.net 982 33.10 使用不同的xml对象 982 33.10.1 xdocument对象 982 33.10.2 xelement对象 983 33.10.3 xnamespace对象 984 33.10.4 xcomment对象 986 33.10.5 xattribute对象 986 33.11 使用linq查询xml 文档 987 33.11.1 查询静态的xml 文档 987 33.11.2 查询动态的xml 文档 989 33.12 xml文档的更多查询 技术 990 33.12.1 读取xml文档 990 33.12.2 写入xml文档 992 33.13 小结 993 第34章 .net编程和sql server 995 34.1 .net运行库的宿主 995 34.2 microsoft.sqlserver.server 997 34.3 用户定义的类型 998 34.3.1 创建udt 998 34.3.2 通过sql使用udt 1003 34.3.3 从客户端代码中使用 udt 1004 34.4 用户定义的聚合函数 1005 34.4.1 创建用户定义的 聚合函数 1006 34.4.2 使用用户定义的 聚合函数 1007 34.5 存储过程 1007 34.5.1 创建存储过程 1008 34.5.2 使用存储过程 1009 34.6 用户定义的函数 1010 34.6.1 创建用户定义的函数 1010 34.6.2 使用用户定义的函数 1010 34.7 触发器 1011 34.7.1 创建触发器 1011 34.7.2 使用触发器 1012 34.8 xml数据类型 1013 34.8.1 包含xml数据的表 1013 34.8.2 读取xml值 1014 34.8.3 数据的查询 1017 34.8.4 xml数据修改语言 (xml dml) 1019 34.8.5 xml索引 1020 34.8.6 强类型化的xml 1021 34.9 小结 1022 第ⅴ部分 显 示 第35章 核心wpf 1025 35.1 概述 1025 35.1.1 名称空间 1025 35.1.2 类层次结构 1027 35.2 形状 1028 35.3 几何图形 1030 35.4 变换 1032 35.5 画笔 1033 35.5.1 solidcolorbrush 1033 35.5.2 lineargradientbrush 1034 35.5.3 radialgradientbrush 1034 35.5.4 drawingbrush 1035 35.5.5 imagebrush 1035 35.5.6 visualbrush 1036 35.6 控件 1037 35.6.1 简单控件 1037 35.6.2 内容控件 1038 35.6.3 带标题的内容控件 1039 35.6.4 项控件 1040 35.6.5 带标题的项控件 1041 35.6.6 修饰 1041 35.7 布局 1042 35.7.1 stackpanel 1042 35.7.2 wrappanel 1043 35.7.3 canvas 1044 35.7.4 dockpanel 1044 35.7.5 grid 1045 35.8 样式和资源 1046 35.8.1 样式 1046 35.8.2 资源 1048 35.8.3 系统资源 1049 35.8.4 从代码中访问资源 1050 35.8.5 动态资源 1050 35.8.6 资源字典 1051 35.9 触发器 1052 35.9.1 属性触发器 1053 35.9.2 多触发器 1054 35.9.3 数据触发器 1055 35.10 模板 1056 35.10.1 控件模板 1057 35.10.2 数据模板 1060 35.10.3 样式化列表框 1061 35.10.4 itemtemplate 1062 35.10.5 列表框元素的控件 模板 1064 35.11 动画 1066 35.11.1 时间轴 1066 35.11.2 非线性动画 1069 35.11.3 事件触发器 1069 35.11.4 关键帧动画 1072 35.12 可见状态管理器 1073 35.13 3-d 1076 35.13.1 模型 1077 35.13.2 照相机 1079 35.13.3 光线 1079 35.13.4 旋转 1079 35.14 小结 1080 第36章 用wpf编写业务 应用程序 1083 36.1 数据绑定 1083 36.1.1 booksdemo应用程序 1084 36.1.2 用xaml绑定 1086 36.1.3 简单对象的绑定 1088 36.1.4 更改通知 1090 36.1.5 对象数据提供程序 1092 36.1.6 列表绑定 1094 36.1.7 主从绑定 1096 36.1.8 多绑定 1097 36.1.9 优先绑定 1099 36.1.10 值的转换 1100 36.1.11 动态添加列表项 1102 36.1.12 数据模板选择器 1103 36.1.13 绑定到xml上 1105 36.1.14 绑定的验证 1107 36.2 commanding 1111 36.2.1 定义命令 1112 36.2.2 定义命令源 1113 36.2.3 命令绑定 1113 36.3 treeview 1114 36.4 datagrid 1118 36.4.1 自定义列 1120 36.4.2 行的细节 1121 36.4.3 用datagrid进行分组 1121 36.5 小结 1124 第37章 用wpf创建文档 1125 37.1 文本元素 1125 37.1.1 字体 1125 37.1.2 texteffect 1127 37.1.3 内联 1128 37.1.4 块 1130 37.1.5 列表 1132 37.1.6 表 1132 37.1.7 块的锚定 1134 37.2 流文档 1135 37.3 固定文档 1136 37.4 xps文档 1140 37.5 打印 1141 37.5.1 用printdialog打印 1142 37.5.2 打印可见元素 1142 37.6 小结 1144 第38章 silverlight 1145 38.1 wpf和silverlight的比较 1145 38.2 创建silverlight项目 1146 38.3 导航 1148 38.4 网络 1152 38.4.1 创建ado.net entity data model 1153 38.4.2 为silverlight客户端 创建wcf服务 1153 38.4.3 调用wcf服务 1155 38.4.4 使用wcf数据服务 1158 38.4.5 使用system.net访问 服务 1160 38.5 浏览器集成 1162 38.5.1 调用javascript 1162 38.5.2 javascript调用 silverlight 1163 38.6 在浏览器外运行的 silverlight应用程序 1164 38.7 小结 1167 第39章 windows窗体 1169 39.1 创建windows窗体 应用程序 1169 39.2 control类 1175 39.2.1 大小和位置 1175 39.2.2 外观 1176 39.2.3 用户交互操作 1176 39.2.4 windows功能 1177 39.2.5 其他功能 1177 39.3 标准控件和组件 1178 39.3.1 button控件 1178 39.3.2 checkbox控件 1178 39.3.3 radiobutton控件 1179 39.3.4 combobox控件、 listbox控件和 checkedlistbox控件 1179 39.3.5 datagridview控件 1180 39.3.6 datetimepicker控件 1188 39.3.7 errorprovider组件 1188 39.3.8 imagelist组件 1189 39.3.9 label控件 1189 39.3.10 listview控件 1189 39.3.11 picturebox控件 1189 39.3.12 progressbar控件 1190 39.3.13 textbox控件、 richtextbox控件与 maskedtextbox控件 1190 39.3.14 panel控件 1191 39.3.15 flowlayoutpanel和 tablelayoutpanel 控件 1191 39.3.16 splitcontainer控件 1192 39.3.17 tabcontrol控件和 tabpages控件 1192 39.3.18 toolstrip控件 1193 39.3.19 menustrip控件 1194 39.3.20 contextmenustrip 控件 1194 39.3.21 toolstripmenuitem 控件 1194 39.3.22 toolstripmanager类 1194 39.3.23 toolstripcontainer 控件 1195 39.4 窗体 1195 39.4.1 form类 1195 39.4.2 多文档界面 1199 39.4.3 创建自己的用户控件 1200 39.5 小结 1200 第40章 核心asp.net 1201 40.1 asp.net概述 1201 40.1.1 asp.net文件的 处理方式 1202 40.1.2 web站点和web 应用程序 1202 40.1.3 asp.net中的状态 管理 1203 40.2 asp.net web窗体 1203 40.2.1 asp.net代码模型 1207 40.2.2 asp.net服务器控件 1208 40.3 ado.net和数据绑定 1222 40.3.1 更新事件登记 应用程序 1222 40.3.2 数据绑定的更多内容 1229 40.4 应用程序配置 1234 40.5 小结 1236 第41章 asp.net的功能 1237 41.1 用户控件和自定义控件 1238 41.1.1 用户控件 1238 41.1.2 pcsdemosite中的 用户控件 1242 41.1.3 自定义控件 1243 41.2 母版页 1247 41.2.1 在web页面中 访问母版页 1248 41.2.2 嵌套的母版页 1248 41.2.3 pcsdemosite中 的母版页 1249 41.3 站点导航 1250 41.3.1 添加站点地图文件 1251 41.3.2 pcsdemosite中 的导航 1252 41.4 安全性 1253 41.4.1 使用security setup 添加forms身份验证 功能 1254 41.4.2 实现登录系统 1255 41.4.3 web 登录服务器控件 1255 41.4.4 保护目录 1256 41.4.5 pcsdemosite中的 安全性 1257 41.5 主题 1259 41.5.1 把主题应用于页面 1259 41.5.2 定义主题 1260 41.5.3 pcsdemosite中的 主题 1260 41.6 web部件 1263 41.6.1 web部件应用程序 组件 1263 41.6.2 web部件示例 1264 41.7 asp.net ajax 1270 41.8 ajax的概念 1271 41.9 asp.net ajax 1273 41.9.1 核心功能 1273 41.9.2 asp.net ajax control toolkit 1275 41.10 asp.net ajax网站 示例 1276 41.11 支持asp.net ajax的 网站配置 1278 41.12 添加asp.net ajax 功能 1279 41.12.1 scriptmanager控件 1280 41.12.2 使用updatepanel 控件 1281 41.12.3 使用updateprogress 1283 41.12.4 使用扩展控件 1284 41.13 使用ajax库 1286 41.13.1 给web页面添加 javascript 1286 41.13.2 全局实用程序函数 1287 41.13.3 使用ajax库 javascript oop 扩展 1287 41.13.4 pagerequestmanager 对象和application 对象 1289 41.13.5 javascript的调试 1292 41.13.6 异步调用web方法 1293 41.13.7 asp.net应用程序 服务 1294 41.14 小结 1294 第42章 asp.net动态数据 和mvc 1297 42.1 路由 1298 42.1.1 查询字符串参数 1298 42.1.2 定义路由 1300 42.1.3 使用路由参数 1303 42.2 动态数据 1305 42.2.1 创建动态数据网站 1305 42.2.2 定制动态数据网站 1310 42.2.3 进一步开发 1314 42.3 mvc 1314 42.3.1 mvc的含义 1314 42.3.2 asp.net mvc的 含义 1315 42.3.3 简单的asp.net mvc 应用程序 1315 42.3.4 定制asp.net mvc 应用程序 1321 42.3.5 进一步开发 1329 42.4 小结 1330 第ⅵ部分 通 信 第43章 wcf 1333 43.1 wcf概述 1333 43.1.1 soap 1335 43.1.2 wsdl 1335 43.1.3 rest 1335 43.1.4 json 1336 43.2 简单的服务和客户端 1336 43.2.1 服务协定 1337 43.2.2 服务的实现 1338 43.2.3 wcf服务宿主和 wcf测试客户端 1338 43.2.4 自定义服务宿主 1340 43.2.5 wcf客户端 1342 43.2.6 诊断 1343 43.3 协定 1345 43.3.1 数据协定 1345 43.3.2 版本问题 1346 43.3.3 服务协定 1346 43.3.4 消息协定 1347 43.4 服务的实现 1348 43.4.1 以编程方式创建 客户端 1351 43.4.2 错误处理 1352 43.5 绑定 1353 43.6 宿主 1356 43.6.1 自定义宿主 1356 43.6.2 was宿主 1357 43.6.3 预配置的宿主类 1357 43.7 客户端 1358 43.8 双工通信 1360 43.9 小结 1362 第44章 windows wf 4 1363 44.1 hello world示例 1363 44.2 活动 1365 44.2.1 if活动 1366 44.2.2 invokemethod活动 1367 44.2.3 parallel活动 1367 44.2.4 delay活动 1368 44.2.5 pick活动 1368 44.3 自定义活动 1369 44.3.1 活动的验证 1370 44.3.2 设计器 1371 44.3.3 自定义复合活动 1373 44.4 工作流 1375 44.4.1 实参和变量 1376 44.4.2 workflowapplication 1377 44.4.3 workflowservicehost 1381 44.4.4 驻留设计器 1386 44.5 小结 1391 第45章 对等网络 1393 45.1 p2p网络概述 1393 45.1.1 客户端-服务器体系 结构 1393 45.1.2 p2p体系结构 1394 45.1.3 p2p体系结构的挑战 1395 45.1.4 p2p术语 1396 45.1.5 p2p解决方案 1396 45.2 microsoft windows peer-to-peer networking 1396 45.2.1 pnrp 1396 45.2.2 people near me 1399 45.3 构建p2p应用程序 1400 45.3.1 system.net.peertopeer 1400 45.3.2 system.net.peertopeer .collaboration 1405 45.4 小结 1408 第46章 消息队列 1409 46.1 概述 1409 46.1.1 使用消息队列的场合 1410 46.1.2 消息队列功能 1411 46.2 message queuing产品 1412 46.3 消息队列体系结构 1412 46.3.1 消息 1413 46.3.2 消息队列 1413 46.4 message queuing 管理工具 1414 46.4.1 创建消息队列 1414 46.4.2 消息队列属性 1415 46.5 消息队列的编程实现 1415 46.5.1 创建消息队列 1415 46.5.2 查找队列 1416 46.5.3 打开已知队列 1417 46.5.4 发送消息 1418 46.5.5 接收消息 1421 46.6 课程订单应用程序 1423 46.6.1 课程订单类库 1423 46.6.2 课程订单消息 发送程序 1424 46.6.3 发送优先级和可恢复 的消息 1425 46.6.4 课程订单消息接收 程序 1426 46.7 接收结果 1429 46.7.1 确认队列 1430 46.7.2 响应队列 1430 46.8 事务队列 1431 46.9 消息队列和wcf 1432 46.9.1 带数据协定的实体类 1432 46.9.2 wcf服务协定 1433 46.9.3 wcf消息接收 应用程序 1434 46.9.4 wcf消息发送 应用程序 1437 46.10 消息队列的安装 1438 46.11 小结 1438 第47章 syndication 1441 47.1 system.servicemodel. syndication名称空间 概述 1441 47.2 读取联合源的示例 1442 47.3 联合源的示例 1444 47.4 小结 1449 第ⅶ部分 附 录 附录a 1453 ***以下内容见随书附赠光盘*** 第48章 使用gdi+绘图 e1 48.1 理解绘图规则 e1 48.1.1 gdi和gdi+ e2 48.1.2 绘制图形 e3 48.1.3 使用onpaint()方法 绘制图形 e6 48.1.4 使用剪切区域 e7 48.2 测量坐标和区域 e9 48.2.1 point和pointf结构 e9 48.2.2 size和sizef结构 e10 48.2.3 rectangle和rectanglef 结构 e11 48.2.4 region e12 48.3 调试须知 e13 48.4 绘制可滚动的窗口 e14 48.5 世界、页面和设备坐标 e18 48.6 颜色 e19 48.6.1 rgb值 e19 48.6.2 命名颜色 e20 48.6.3 图形显示模式和安全 的调色板 e20 48.6.4 安全调色板 e21 48.7 画笔和钢笔 e21 48.7.1 画笔 e22 48.7.2 钢笔 e23 48.8 绘制图形和线条 e23 48.9 显示图像 e25 48.10 处理图像时的问题 e27 48.11 绘制文本 e28 48.12 简单的文本示例 e29 48.13 字体和字体系列 e30 48.14 示例:枚举字体系列 e31 48.15 编辑文本文档: capseditor示例 e33 48.15.1 invalidate()方法 e37 48.15.2 计算项的大小和文档 的大小 e38 48.15.3 onpaint()方法 e39 48.15.4 坐标转换 e41 48.15.5 响应用户的输入 e42 48.16 打印 e45 48.17 小结 e50 第49章 vsto e51 49.1 vsto概述 e51 49.1.1 项目类型 e52 49.1.2 项目功能 e54 49.2 vsto项目基础 e55 49.2.1 office对象模型 e55 49.2.2 vsto名称空间 e55 49.2.3 宿主项和宿主控件 e56 49.2.4 基本的vsto项目 结构 e57 49.2.5 globals类 e60 49.2.6 事件处理 e60 49.3 构建vsto解决方案 e61 49.3.1 管理应用程序级插件 e62 49.3.2 与应用程序和文档 交互操作 e63 49.3.3 ui的自定义 e64 49.4 示例应用程序 e68 49.5 小结 e78 第50章 maf e79 50.1 maf体系结构 e79 50.1.1 管道 e80 50.1.2 发现 e81 50.1.3 激活和隔离 e82 50.1.4 协定 e83 50.1.5 生命周期 e84 50.1.6 版本问题 e85 50.2 插件示例 e86 50.2.1 插件协定 e86 50.2.2 计算器插件视图 e87 50.2.3 计算器插件适配器 e88 50.2.4 计算器插件 e90 50.2.5 计算器宿主视图 e91 50.2.6 计算机宿主适配器 e91 50.2.7 计算器宿主 e93 50.2.8 其他插件 e97 50.3 小结 e97 第51章 enterprise services e99 51.1 使用enterprise services e99 51.1.1 简史 e100 51.1.2 使用enterprise services 的场合 e100 51.1.3 重要功能 e101 51.2 创建简单的com+应用 程序 e103 51.2.1 servicedcomponent类 e103 51.2.2 程序集的属性 e103 51.2.3 创建组件 e104 51.3 部署 e106 51.3.1 自动部署 e106 51.3.2 手工部署 e106 51.3.3 创建安装软件包 e106 51.4 组件服务管理器 e107 51.5 客户端应用程序 e108 51.6 事务 e109 51.6.1 事务的特性 e109 51.6.2 事务的结果 e110 51.7 示例应用程序 e111 51.7.1 实体类 e111 51.7.2 ordercontrol组件 e113 51.7.3 orderdata组件 e114 51.7.4 orderlinedata组件 e116 51.7.5 客户端应用程序 e117 51.8 集成wcf和enterprise services e118 51.8.1 wcf服务外观 e118 51.8.2 客户端应用程序 e122 51.9 小结 e123 第52章 目录服务 e125 52.1 active directory的 体系结构 e126 52.1.1 active directory的 功能 e126 52.1.2 active directory的 概念 e126 52.1.3 active directory数据 的特征 e129 52.1.4 指定架构 e130 52.2 active directory的 管理工具 e131 52.2.1 active directory users and computers工具 e131 52.2.2 adsi edit工具 e132 52.3 active directory编程 e133 52.3.1 system.directoryservices 名称空间中的类 e134 52.3.2 绑定到directory services e134 52.3.3 获取目录项 e138 52.3.4 对象集合 e140 52.3.5 缓存 e141 52.3.6 创建新对象 e141 52.3.7 更新目录项 e142 52.3.8 访问本地adsi对象 e143 52.3.9 在active directory 中搜索 e144 52.4 搜索用户对象 e148 52.4.1 用户界面 e148 52.4.2 获取架构命名上下文 e149 52.4.3 获取user类的属性名 e149 52.4.4 搜索用户对象 e150 52.5 账户管理 e152 52.5.1 显示用户信息 e152 52.5.2 创建用户 e153 52.5.3 重置密码 e153 52.5.4 创建组 e154 52.5.5 在组中添加用户 e154 52.5.6 查找用户 e154 52.6 dsml e155 52.6.1 system.directoryservices. protocols名称空间中 的类 e156 52.6.2 用dsml搜索 active directory对象 e156 52.7 小结 e157 第53章 c#、visual basic、 c++/cli和f# e159 53.1 名称空间 e160 53.2 定义类型 e161 53.2.1 引用类型 e161 53.2.2 值类型 e162 53.2.3 类型推断 e163 53.2.4 接口 e164 53.2.5 枚举 e165 53.3 方法 e166 53.3.1 方法的参数和返回 类型 e166 53.3.2 参数修饰符 e167 53.3.3 构造函数 e168 53.3.4 属性 e170 53.3.5 对象初始值设定项 e171 53.3.6 扩展方法 e171 53.4 静态成员 e172 53.5 数组 e173 53.6 控制语句 e174 53.6.1 if语句 e174 53.6.2 条件操作符 e174 53.6.3 switch语句 e175 53.7 循环 e176 53.7.1 for语句 e176 53.7.2 while和do…while 语句 e177 53.7.3 foreach语句 e178 53.8 异常处理 e178 53.9 继承 e180 53.9.1 访问修饰符 e180 53.9.2 关键字 e181 53.10 资源管理 e183 53.10.1 idisposable接口的 实现 e183 53.10.2 using语句 e184 53.10.3 重写finalize()方法 e184 53.11 委托 e186 53.12 事件 e188 53.13 泛型 e190 53.14 linq查询 e192 53.15 c++/cli混合本地代码 和托管代码 e192 53.16 c#的特殊功能 e193 53.17 小结 e194 第54章 .net remoting e195 54.1 使用.net remoting的 原因 e195 54.2 .net remoting术语详解 e197 54.2.1 客户端通信 e198 54.2.2 服务器端通信 e199 54.3 上下文 e199 54.3.1 激活 e200 54.3.2 特性和属性 e200 54.3.3 上下文之间的通信 e201 54.4 远程对象、客户端和 服务器 e201 54.4.1 远程对象 e201 54.4.2 简单的服务器应用 程序 e202 54.4.3 简单的客户端应用 程序 e203 54.5 .net remoting体系结构 e204 54.5.1 信道 e204 54.5.2 格式化程序 e207 54.5.3 channelservices和 remotingconfiguration e207 54.5.4 对象的激活 e209 54.5.5 消息接收器 e212 54.5.6 在远程方法中传递对象 e213 54.5.7 生命周期管理 e216 54.6 配置文件 e218 54.6.1 知名对象的服务器 配置 e220 54.6.2 知名对象的客户端 配置 e220 54.6.3 客户端激活的对象的 服务器配置 e221 54.6.4 客户端激活的对象的 客户端配置 e222 54.6.5 使用配置文件的 服务器代码 e222 54.6.6 使用配置文件的 客户端代码 e223 54.6.7 客户端信道的延迟 加载 e223 54.6.8 调试配置 e224 54.6.9 配置文件中的生命 周期服务 e224 54.6.10 格式化程序提供程序 e225 54.7 在asp.net中驻留远程 服务器 e225 54.8 类、接口和soapsuds e227 54.8.1 接口 e227 54.8.2 soapsuds e227 54.9 异步远程调用 e228 54.9.1 使用委托和 .net remoting e228 54.9.2 oneway特性 e229 54.10 .net remoting的 安全性 e229 54.11 远程处理和事件 e230 54.11.1 远程对象 e231 54.11.2 事件参数 e232 54.11.3 服务器 e233 54.11.4 服务器配置文件 e233 54.11.5 事件接收器 e234 54.11.6 客户端 e234 54.11.7 客户端配置文件 e235 54.11.8 运行程序 e236 54.12 调用上下文 e236 54.13 小结 e237 第55章 web服务和asp.net e239 55.1 soap e240 55.2 wsdl e241 55.3 web服务 e242 55.3.1 提供web服务 e242 55.3.2 使用web服务 e246 55.4 扩充事件登记示例 e248 55.4.1 事件登记 web服务 e249 55.4.2 事件登记客户端 e253 55.5 使用soap标题交换 数据 e256 55.6 小结 e261 第56章 linq to sql e263 56.1 linq to sql和 visual studio 2010 e264 56.1.1 调用products表 e265 56.1.2 添加linq to sql类 e265 56.1.3 o/r设计器概述 e266 56.1.4 创建product对象 e267 56.2 对象如何映射到linq 对象上 e269 56.2.1 datacontext对象 e270 56.2.2 table[tentity]对象 e274 56.3 脱离o/r设计器工作 e274 56.3.1 创建自己的自定义 对象 e274 56.3.2 通过自定义对象和 linq查询 e275 56.3.3 通过查询限制所调用 的列 e276 56.3.4 使用列名 e277 56.3.5 创建自己的 datacontext对象 e278 56.4 自定义对象和o/r 设计器 e279 56.5 查询数据库 e280 56.5.1 使用查询表达式 e280 56.5.2 查询表达式 e281 56.5.3 使用表达式筛选 e282 56.5.4 执行连接 e282 56.5.5 分组项 e284 56.6 存储过程 e285 56.7 小结 e286 第57章 wpf 3.0 e287 57.1 hello world示例 e287 57.2 活动 e288 57.2.1 ifelseactivity e289 57.2.2 parallelactivity e290 57.2.3 callexternalmethod activity e291 57.2.4 delayactivity e291 57.2.5 listenactivity e292 57.2.6 活动执行模型 e293 57.3 自定义活动 e293 57.3.1 活动的验证 e295 57.3.2 主题和设计器 e296 57.3.3 activitytoolboxitem 和图标 e297 57.3.4 自定义复合活动 e299 57.4 工作流 e305 57.4.1 顺序工作流 e305 57.4.2 状态机工作流 e305 57.4.3 给工作流传递参数 e307 57.4.4 从工作流中返回结果 e308 57.4.5 将参数绑定到活动上 e309 57.5 工作流运行库 e310 57.6 工作流服务 e310 57.6.1 持久性服务 e312 57.6.2 跟踪服务 e313 57.6.3 自定义服务 e315 57.7 与wcf集成 e316 57.8 驻留工作流 e318 57.9 工作流设计器 e319 57.10 从wf 3.x迁移到wf 4 e320 57.10.1 把活动代码提取到 服务中 e320 57.10.2 删除代码活动 e320 57.10.3 同时运行wf 3.x 和4 e321 57.10.4 考虑把状态机迁移到 流程图上 e321 57.11 小结 e321 ................ ..................
43.20MB
C#开发典型模块大全(光盘)
2014-09-27第1章 认识C#及开发环境 1.1 C#概述 1.1.1 C#发展历程 1.1.2 C#语言编程环境 1.2.NETFramework2.0简介 1.2.1 什么是.NETFramework2.0 1.2.2.NETFramework2.0特性 1.3 安装集成开发环境VisualStudio2005 1.3.1 安装VisualStudio2005开发环境 1.3.2 安装MSDN帮助 1.3.3 如何使用MSDN帮助 1.3.4 利用MSDN帮助附带的示例学习编程 1.4 启动VisualStudio2005开发环境 1.4.1 启动VisualStudio2005 1.4.2 创建项目 1.5 熟悉VisualStudio2005集成开发环境 1.5.1 新特性 1.5.2 主窗口 1.5.3 菜单栏 1.5.4 工具栏 1.5.5 文档窗口 1.5.6 工具箱窗口 1.5.7 解决方案资源管理器窗口 1.5.8 属性窗口 1.5.9 代码编辑器 1.5.10 “错误列表”面板 1.5.11 “输出”面板 1.6 程序调试 1.6.1 断点操作 1.6.2 使用开始、中断和停止执行功能调试程序 1.6.3 单步执行 1.6.4 运行到程序的指定位置 第2章 QQ企业通 2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端登录模块设计 2.3.4 客户端QQ模块设计 2.3.5 客户端消息发送模块设计 2.3.6 服务器端控制台模块设计 第3章 SQL数据表提取器模块 3.1 概述 3.2 关键技术 3.2.1 如何备份数据库 3.2.2 如何还原数据库 3.2.3 如何附加数据库 3.2.4 如何分离数据库 3.2.5 设置数据库模式 3.3 设计过程 3.3.1 主窗体 3.3.2 获取服务器名称 3.3.3 获取所有数据库 3.3.4 获取所有数据表 3.3.5 备份数据库 3.3.6 还原数据库 3.3.7 附加数据库 3.3.8 分离数据库 3.3.9 导出表结构 3.3.10 导出数据 第4章 万能搜索模块 4.1 设计思路 4.2 关键技术 4.2.1 如何制作一个接口程序 4.2.2 实现接口程序的信息互传 4.2.3 如何将接口程序加载到其他程序中 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL语句 4.3.5 主程序获得接口信息 第5章 万能打印模块 5.1 设计思路 5.2 关键技术 5.2.1 打印设置(PrintDocument类) 5.2.2 打印预览对话框(PrintPreviewDialog) 5.2.3 打印对话框(PrintDialog) 5.2.4 获取指定颜色值和字体样式 5.2.5 DataGridView控件的相关应用 5.3 设计过程 5.3.1 打印信息的设置 5.3.2 表格样式的设置 5.3.3 打印类的设置 5.3.4 打印数据信息 第6章 决策分析模块 6.1 设计思路 6.2 关键技术 6.2.1 游标的基本操作 6.2.2 存储过程的基本操作 6.2.3 透视表的基本概念 6.2.4 统计表的基本操作 6.2.5 单击显示右键菜单 6.3 设计过程 6.3.1 主窗体的初始化 6.3.2 透视表的筛选 6.3.3 透视表的设计 6.3.4 统计表的设计 第7章 自定义图表控件 7.1 设计思路 7.2 关键技术 7.2.1 控件的生成 7.2.2 如何在项目中添加控件 7.2.3 在“属性”对话框中添加属性 7.2.4 用GDI+绘制图形 7.2.5 如何在控件上绘制图形 7.2.6 获取扇形外弧中心点的位置 7.3 设计过程 7.3.1 向自定义控件中添加属性 7.3.2 获取绘制图表的初始值数据 7.3.3 绘制标签框 7.3.4 绘制图表中的表格 7.3.5 绘制条形图 7.3.6 绘制面形图 7.3.7 绘制饼形图 第8章 电子邮件收发模块 8.1 概述 8.2 关键技术 8.2.1 Base64编码格式 8.2.2 SMTP服务 8.2.3 POP3协议 8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 数据库设计 8.3.2 系统登录 8.3.3 邮件发送实现 8.3.4 为邮件上传多个附件 8.3.5 邮件接收实现 8.3.6 查看邮件详细信息 8.3.7 下载附件的实现 8.3.8 删除邮件实现 8.3.9 用户管理 第9章 短信群发模块 9.1 设计思路 9.2 关键技术 9.2.1 短信猫中API函数的使用 9.2.2 短信猫中的短信接收格式 9.2.3 窗体间的互操作 9.2.4 锁定模块主窗体 9.2.5 使用ADO.NET连接Access数据库 9.3 设计过程 9.3.1 数据库设计 9.3.2 群发短信实现 9.3.3 已发送短信管理 9.3.4 接收短信实现 9.3.5 常用联系人管理 9.3.6 常用短语管理 第10章 桌面精灵模块 10.1 概述 10.2 关键技术 10.2.1 阴阳历转换算法 10.2.2 调用系统API实现鼠标穿透效果 10.2.3 修改注册表控制程序开机自启动 10.2.4 通过控制窗体透明度实现日历透明显示效果 10.2.5 拖动无标题栏窗体 10.2.6 将窗体的关闭位置写入到注册表中 10.2.7 将程序图标写入到托盘 10.3 设计过程 10.3.1 桌面精灵模块公共类设计 10.3.2 当前日期的农历、天干地支年、节日及星座显示 10.3.3 定时提醒的实现 10.3.4 日历窗体效果控制 10.3.5 转到某天、某周、某月及某年的实现 10.3.6 节日管理 10.3.7 提醒管理 第11章 文件批量处理器 11.1 概述 11.2 关键技术 11.2.1 文件流技术 11.2.2 文件解压缩技术 11.2.3 获取系统文件及文件夹图标 11.2.4 获取指定目录下的所有文件及文件夹 11.2.5 Word操作技术 11.2.6 进度条的显示 11.2.7 对ListView控件中的项进行排序 11.3 设计过程 11.3.1 主窗体预览 11.3.2 批量复制、剪切文件 11.3.3 批量复制、剪切文件夹 11.3.4 批量重命名文件 11.3.5 批量删除文件及文件夹 11.3.6 搜索文件及文件夹 11.3.7 批量压缩、解压文件 11.3.8 分割、合并文件 第12章 图片管理工具模块 12.1 概述 12.2 关键技术 12.2.1 上下移动ListBox选中项 12.2.2 将文件复制到剪切板 12.2.3 格式转换 12.2.4 图片幻灯片 12.2.5 图片旋转 12.3 设计过程 12.3.1 主窗体 12.3.2 打开图片目录 12.3.3 图片格式转换 12.3.4 设为桌面背景 12.3.5 图片特效 12.3.6 图片调节 12.3.7 图片水印 12.3.8 幻灯片放映 12.3.9 图片打印 第13章 FTP文件管理模块 13.1 设计思路 13.2 关键技术 13.2.1 架设FTP服务器 13.2.2 登录FTP服务器 13.2.3 获取服务器上文件的大小 13.2.4 向FTP服务器发送命令 13.2.5 调用系统API 13.3 设计过程 13.3.1 主窗体设计 13.3.2 登录FTP服务器 13.3.3 获取本地磁盘 13.3.4 获取指定磁盘中的文件 13.3.5 获取本地磁盘中文件的图标 13.3.6 获取FTP服务器中的所有文件 13.3.7 批量上传文件 13.3.8 批量下载文件 13.3.9 删除FTP中的文件或文件夹 第14章 魔法兔子模块 14.1 概述 14.2 关键技术 14.2.1 获取进程信息 14.2.2 获取计算机信息 14.2.3 修改注册表 14.3 设计过程 14.3.1 主窗体 14.3.2 功能菜单设计 14.3.3 系统检测 14.3.4 系统优化 14.3.5 超级工具 14.3.6 实用工具 14.3.7 任务管理器 14.3.8 选项设置 第15章 学生考试模块 15.1 设计思路 15.2 关键技术 15.2.1 获取试题数目 15.2.2 验证用户名和密码 15.2.3 随机抽取试题 15.2.4 自动评分 15.3 设计过程 15.3.1 数据库设计 15.3.2 公共类设计 15.3.3 登录验证 15.3.4 主窗体实现 15.3.5 开始考试 15.3.6 修改密码 15.3.7 分数查询 15.3.8 管理员界面 15.3.9 用户管理 15.3.10 成绩查询 15.3.11 考试设置 15.3.12 添加试题 15.3.13 修改试题 第16章 网页浏览器模块 16.1 概述 16.2 关键技术 16.2.1 网页浏览器核心控件 16.2.2 网页多页面显示 16.2.3 获取网页源码 16.3 设计过程 16.3.1 主窗体 16.3.2 查看网页源码 16.3.3 添加到收藏夹 16.3.4 整理收藏夹 第17章 电话客服管理模块 17.1 设计思路 17.2 关键技术 17.2.1 语音卡中的API函数 17.2.2 硬件语音卡驱动分析 17.2.3 窗体间传值 17.2.4 导航菜单的制作 17.3 设计过程 17.3.1 数据库设计 17.3.2 模块主窗体设计 17.3.3 自动语音处理 17.3.4 通话管理实现 17.3.5 员工管理实现 17.3.6 产品类别管理 第18章 多媒体播放器 18.1 设计思路 18.2 关键技术 18.2.1 窗体间的信息传递 18.2.2 AxWindowsMediaPlayer控件的相关应用 18.2.3 在列表框中动态移动选中的项 18.2.4 如何在文件夹中遍历文件 18.2.5 如何实现播放进度条 18.3 设计过程 18.3.1 磁性窗体的设置 18.3.2 播放窗体的设计 18.3.3 列表窗体的设计 18.3.4 歌词窗体的设计 第19章 屏幕录像模块 19.1 概述 19.2 关键技术 19.2.1 如何抓取屏幕 19.2.2 创建AVI文件 19.2.3 向AVI文件中添加视频 19.2.4 分解AVI文件 19.2.5 设置快捷键 19.3 设计过程 19.3.1 主窗体设计 19.3.2 抓图功能 19.3.3 选项设置 19.3.4 屏幕录像 19.3.5 视频分割 第20章 EXE文件加密器 20.1 设计思路 20.2 关键技术 20.2.1 FileStream对象 20.2.2 文件的读写操作 20.2.3 如何获取两个日期的月份差 20.2.4 获取两个日期的相差天数 20.2.5 载取字符串中的指定字符 20.3 设计过程 20.3.1 获取加密字符串的信息 20.3.2 对生成后的数据进行加密 20.3.3 对EXE文件进行加密 20.3.4 解密文件的设置 第21章 视频监控模块 21.1 设计思路 21.2 关键技术 21.2.1 认识视频监控卡 21.2.2 视频监控卡中API函数的使用 21.2.3 Pelco-D协议 21.2.4 串口通信技术 21.2.5 WMI类的使用 21.2.6 注册表技术 21.3 设计过程 21.3.1 视频监控实现 21.3.2 云台控制 21.3.3 色彩控制 21.3.4 图像抓拍及生成监控录像 21.3.5 定时录像设置 21.3.6 录像回放 21.3.7 注册程序 21.3.8 实时监控软件运行时间及磁盘空间 第22章 网络五子棋游戏 22.1 设计思路 22.2 关键技术 22.2.1 在下拉列表中绘制图片 22.2.2 UDP协议 22.2.3 用Socket实现信息传递的必备条件 22.2.4 自定义事件的设置 22.2.5 动态按钮的设置 22.3 设计过程 22.3.1 类库的设计 22.3.2 客户端注册模块设计 22.3.3 客户端登录模块设计 22.3.4 五子棋大厅的设计 22.3.5 对决窗体的设计 22.3.6 网络五子棋服务器窗体的设计 第23章 在线升级模块 23.1 设计思路 23.2 关键技术 23.2.1 FTP上传下载技术 23.2.2 XML文件操作 23.2.3 INI文件的读写 23.2.4 动态生成版本面板 23.2.5 使用Hashtable(哈希表)记录版本号及更新信息 23.3 类库设计过程 23.4 服务器端设计过程 23.4.1 服务器端主窗体预览 23.4.2 连接FTP服务器 23.4.3 向FTP服务器上传新版本 23.5 客户端设计过程 23.5.1 启动客户端时检测是否有新版本 23.5.2 从FTP服务器下载指定版本 23.5.3 定时升级设置 第24章 Windows应用程序打包与部署境 24.1 WindowsInstaller简介 24.2 Windows应用程序部署 24.2.1 创建部署项目 24.2.2 可选的部署功能 24.3 安装及卸载Windows程序 24.3.1 在本地计算机上安装 24.3.2 部署到其他计算机 24.3.3 卸载安装应用程序
2.47MB
《C#高级编程第七版》中文(ProfessionalC#4.0and.NET4)[共十卷][VOL10]
2011-05-26该版本已添加目录标签 并修正了一些错误 中文名: C#高级编程 第七版 原名: Professional C# 4.0 and .NET 4 别名: C#高级编程(第7版) 作者: (美)Christian Nagel Bill Evjen Jay Glynn.译者: 无.资源格式: PDF 版本: 影印版 出版社: worx.书号: ISBN:9787302239376.发行时间: 2010年 地区: 大陆 语言: 中文 本书是Wrox畅销书,C#经典名著!2009年度全行业优秀畅销书。自第一版出版以来,都是国内读者的普遍好评,累计销量近十万册。 《C#高级编程(第7版)》的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写 Windows应用程序和ASP.NET Web应用程序。 本书几乎涵盖C#语言的所有功能,对于C#初学者和有经验的程序员是值得大力推荐的书籍。实践证明,本书是关于C# 和 Visual Studio的一本全面 而且权威的参考书。 新的C# 4对于在Visual Studio 2010中编写代码是必不可少的。这本实用指南强调,C#是编写.NET 4应用程序的首选语言。《C#高级编程(第7版)》 的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写Windows应用程序和ASP.NET Web应用程序。 本书主要内容 ◆ 回顾.NET体系结构、对象、泛型、继承、数组、运算符、类型强制转换、委托、事件、Lambda表达式等 ◆ 详细论述C#中的动态对象、命名参数和可选参数、COM专用的交互操作功能、安全类型变体 ◆ 阐述.NET 4的新增功能、WF 4、ADO.NET 数据服务、MEF、并行任务库和PLINQ ◆ 深入探讨LINQ、WCF、WPF、流文档和固定文档及Silverlight等功能强大的技术 ◆ 回顾ASP.NET编程,介绍ASP.NET MVC和ASP.NET 动态数据等新功能 ◆ 讨论使用WCF、MSMQ、点对点和联合进行通信 目录: 第ⅰ部分 c# 语 言 第1章 .net体系结构 3 1.1 c#与.net的关系 3 1.2 公共语言运行库 4 1.2.1 平台无关性 4 1.2.2 提高性能 4 1.2.3 语言的互操作性 5 1.3 中间语言 6 1.3.1 面向对象和接口的支持 6 1.3.2 不同的值类型和引用类型 7 1.3.3 强数据类型化 8 1.3.4 通过异常处理错误 12 1.3.5 特性的使用 13 1.4 程序集 13 1.4.1 私有程序集 14 1.4.2 共享程序集 14 1.4.3 反射 14 1.4.4 并行编程 15 1.5 .net framework类 15 1.6 名称空间 16 .1.7 用c#创建.net应用程序 16 1.7.1 创建asp.net应用程序 16 1.7.2 创建windows窗体 18 1.7.3 使用wpf 18 1.7.4 windows控件 19 1.7.5 windows服务 19 1.7.6 wcf 19 1.7.7 windows wf 19 1.8 c#在.net企业体系结构 中的作用 19 1.9 小结 21 第2章 核心c# 23 2.1 第一个c#程序 23 2.1.1 代码 24 2.1.2 编译并运行程序 24 2.1.3 详细介绍 25 2.2 变量 26 2.2.1 变量的初始化 27 2.2.2 类型推断 28 2.2.3 变量的作用域 29 2.2.4 常量 31 2.3 预定义数据类型 32 2.3.1 值类型和引用类型 32 2.3.2 cts类型 33 2.3.3 预定义的值类型 33 2.3.4 预定义的引用类型 36 2.4 流控制 38 2.4.1 条件语句 38 2.4.2 循环 42 2.4.3 跳转语句 45 2.5 枚举 46 2.6 名称空间 47 2.6.1 using语句 49 2.6.2 名称空间的别名 49 2.7 main()方法 50 2.7.1 多个main()方法 50 2.7.2 给main()方法传递参数 52 2.8 有关编译c#文件的更多内容 52 2.9 控制台i/o 54 2.10 使用注释 56 2.10.1 源文件中的内部注释 56 2.10.2 xml文档 56 2.11 c#预处理器指令 58 2.11.1 #define和 #undef 59 2.11.2 #if, #elif, #else和#endif 59 2.11.3 #warning和 # error 60 2.11.4 #region和#endregion 61 2.11.5 #line 61 2.11.6 #pragma 61 2.12 c#编程规则 62 2.12.1 关于标识符的规则 62 2.12.2 用法约定 63 2.13 小结 68 第3章 对象和类型 69 3.1 类和结构 69 3.2 类 70 3.2.1 数据成员 70 3.2.2 函数成员 71 3.2.3 只读字段 83 3.3 匿名类型 84 3.4 结构 85 3.4.1 结构是值类型 86 3.4.2 结构和继承 87 3.4.3 结构的构造函数 87 3.5 部分类 87 3.6 静态类 89 3.7 object类 89 3.7.1 system.object()方法 90 3.7.2 tostring()方法 90 3.8 扩展方法 92 3.9 小结 93 第4章 继承 95 4.1 继承的类型 95 4.1.1 实现继承和接口继承 95 4.1.2 多重继承 95 4.1.3 结构和类 96 4.2 实现继承 96 4.2.1 虚方法 97 4.2.2 隐藏方法 98 4.2.3 调用函数的基类版本 99 4.2.4 抽象类和抽象函数 100 4.2.5 密封类和密封方法 100 4.2.6 派生类的构造函数 101 4.3 修饰符 106 4.3.1 可见性修饰符 106 4.3.2 其他修饰符 106 4.4 接口 107 4.4.1 定义和实现接口 108 4.4.2 派生的接口 111 4.5 小结 113 第5章 泛型 115 5.1 概述 115 5.1.1 性能 116 5.1.2 类型安全 117 5.1.3 二进制代码的重用 117 5.1.4 代码的扩展 117 5.1.5 命名约定 118 5.2 创建泛型类 118 5.3 泛型类的功能 122 5.3.1 默认值 123 5.3.2 约束 123 5.3.3 继承 126 5.3.4 静态成员 127 5.4 泛型接口 127 5.4.1 协变和抗变 128 5.4.2 泛型接口的协变 129 5.4.3 泛型接口的抗变 130 5.5 泛型结构 131 5.6 泛型方法 134 5.6.1 泛型方法示例 134 5.6.2 带约束的泛型方法 135 5.6.3 带委托的泛型方法 136 5.6.4 泛型方法规范 137 5.7 小结 138 第6章 数组 139 6.1 简单数组 139 6.1.1 数组的声明 139 6.1.2 数组的初始化 139 6.1.3 访问数组元素 140 6.1.4 使用引用类型 141 6.2 多维数组 142 6.3 锯齿数组 143 6.4 array类 144 6.4.1 创建数组 145 6.4.2 复制数组 146 6.4.3 排序 147 6.5 数组作为参数 150 6.5.1 数组协变 151 6.5.2 arraysegment[t] 151 6.6 枚举 152 6.6.1 ienumerator接口 152 6.6.2 foreach语句 153 6.6.3 yield语句 153 6.7 元组 158 6.8 结构比较 159 6.9 小结 162 第7章 运算符和类型强制转换 163 7.1 运算符 163 7.1.1 运算符的简化操作 165 7.1.2 运算符的优先级 169 7.2 类型的安全性 169 7.2.1 类型转换 170 7.2.2 装箱和拆箱 173 7.3 比较对象的相等性 174 7.3.1 比较引用类型的相等性 174 7.3.2 比较值类型的相等性 175 7.4 运算符重载 176 7.4.1 运算符的工作方式 177 7.4.2 运算符重载的示例: vector结构 178 7.5 用户定义的类型强制转换 185 7.5.1 实现用户定义的类型 强制转换 186 7.5.2 多重类型强制转换 192 7.6 小结 195 第8章 委托、lambda表达式 和事件 197 8.1 委托 197 8.1.1 声明委托 198 8.1.2 使用委托 199 8.1.3 简单的委托示例 202 8.1.4 action[t]和func[t] 委托 204 8.1.5 bubblesorter示例 204 8.1.6 多播委托 207 8.1.7 匿名方法 210 8.2 lambda表达式 211 8.2.1 参数 212 8.2.2 多行代码 212 8.2.3 lambda表达式外部的 变量 213 8.3 事件 214 8.3.1 事件发布程序 214 8.3.2 事件侦听器 216 8.3.3 弱事件 217 8.4 小结 220 第9章 字符串和正则表达式 221 9.1 system.string类 221 9.1.1 创建字符串 222 9.1.2 stringbuilder成员 225 9.1.3 格式字符串 226 9.2 正则表达式 231 9.2.1 正则表达式概述 232 9.2.2 regularexpressions playaround示例 233 9.2.3 显示结果 235 9.2.4 匹配、组合和捕获 237 9.3 小结 238 第10章 集合 239 10.1 集合接口和类型 239 10.2 列表 240 10.2.1 创建列表 241 10.2.2 只读集合 250 10.3 队列 250 10.4 栈 254 10.5 链表 256 10.6 有序列表 261 10.7 字典 262 10.7.1 键的类型 263 10.7.2 字典示例 264 10.7.3 lookup类 268 10.7.4 有序字典 269 10.8 集 269 10.9 可观察的集合 271 10.10 位数组 272 10.10.1 bitarray类 273 10.10.2 bitvector32结构 275 10.11 并发集合 277 10.12 性能 279 10.13 小结 281 第11章 linq 283 11.1 linq概述 283 11.1.1 列表和实体 283 11.1.2 linq查询 287 11.1.3 扩展方法 288 11.1.4 推迟查询的执行 289 11.2 标准的查询操作符 291 11.2.1 筛选 293 11.2.2 用索引筛选 293 11.2.3 类型筛选 294 11.2.4 复合的from子句 294 11.2.5 排序 295 11.2.6 分组 296 11.2.7 对嵌套的对象分组 297 11.2.8 连接 298 11.2.9 集合操作 300 11.2.10 合并 301 11.2.11 分区 302 11.2.12 聚合操作符 303 11.2.13 转换 304 11.2.14 生成操作符 305 11.3 并行linq 306 11.3.1 并行查询 306 11.3.2 分区器 307 11.3.3 取消 307 11.4 表达式树 308 11.5 linq提供程序 311 11.6 小结 311 第12章 动态语言扩展 313 12.1 dlr 313 12.2 dynamic类型 313 12.3 包含dlr scriptruntime 318 12.4 dynamicobject和 expandoobject 321 12.4.1 dynamicobject 321 12.4.2 expandoobject 323 12.5 小结 324 第13章 内存管理和指针 325 13.1 后台内存管理 325 13.1.1 值数据类型 325 13.1.2 引用数据类型 327 13.1.3 垃圾回收 328 13.2 释放非托管的资源 330 13.2.1 析构函数 330 13.2.2 idisposable接口 331 13.2.3 实现idisposable接口 和析构函数 332 13.3 不安全的代码 334 13.3.1 用指针直接访问内存 334 13.3.2 指针示例: pointerplayground 343 13.3.3 使用指针优化性能 347 13.4 小结 350 第14章 反射 351 14.1 自定义特性 351 14.1.1 编写自定义特性 352 14.1.2 自定义特性示例: whatsnewattributes 355 14.2 反射 358 14.2.1 system.type类 358 14.2.2 typeview示例 360 14.2.3 assembly类 362 14.2.4 完成whatsnew attributes示例 364 14.3 小结 368 第15章 错误和异常 369 15.1 异常类 369 15.2 捕获异常 371 15.2.1 实现多个catch块 373 15.2.2 在其他代码中捕获异常 376 15.2.3 system.exception属性 376 15.2.4 没有处理异常时所发生 的情况 377 15.2.5 嵌套的 try块 378 15.3 用户定义的异常类 379 15.3.1 捕获用户定义的异常 380 15.3.2 抛出用户定义的异常 382 15.3.3 定义用户定义的异常类 385 15.4 小结 387 第ⅱ部分 visual studio 第16章 visual studio 2010 391 16.1 使用visual studio 2010 391 16.1.1 创建项目 395 16.1.2 解决方案和项目的区别 401 16.1.3 windows应用程序代码 403 16.1.4 项目的浏览和编码 404 16.1.5 生成项目 411 16.1.6 调试代码 415 16.2 重构工具 418 16.3 面向多个版本的 .net framework 420 16.4 wpf、wcf、wf等 421 16.4.1 在visual studio 2010 中构建wpf应用程序 421 16.4.2 在visual studio 2010 中构建wf应用程序 423 16.5 小结 424 第17章 部署 425 17.1 部署的规划 425 17.1.1 部署选项 426 17.1.2 部署要求 426 17.1.3 部署.net运行库 427 17.2 简单的部署选项 427 17.2.1 xcopy部署 428 17.2.2 xcopy和web 应用程序 428 17.2.3 发布web站点 429 17.3 visual studio 2010安装 和部署项目 429 17.3.1 windows installer 430 17.3.2 创建安装程序 430 17.4 clickonce 437 17.4.1 clickonce操作 437 17.4.2 发布clickonce 应用程序 438 17.4.3 clickonce设置 438 17.4.4 clickonce文件的 应用程序缓存 439 17.4.5 应用程序的安全性 439 17.5 visual studio 2010 高级选项 440 17.5.1 文件系统编辑器 440 17.5.2 注册表编辑器 440 17.5.3 文件类型编辑器 440 17.5.4 用户界面编辑器 441 17.5.5 自定义动作编辑器 442 17.5.6 launch conditions 编辑器 443 17.6 小结 444 第ⅲ部分 基 础 第18章 程序集 447 18.1 程序集的含义 447 18.1.1 程序集的功能 448 18.1.2 程序集的结构 448 18.1.3 程序集清单 449 18.1.4 名称空间、程序集 和组件 449 18.1.5 私有程序集和共享 程序集 449 18.1.6 附属程序集 450 18.1.7 查看程序集 450 18.2 创建程序集 451 18.2.1 创建模块和程序集 451 18.2.2 程序集的特性 452 18.2.3 动态加载和创建 程序集 454 18.3 应用程序域 457 18.4 共享程序集 461 18.4.1 强名 462 18.4.2 使用强名获得完整性 462 18.4.3 全局程序集缓存 463 18.4.4 创建共享程序集 463 18.4.5 创建强名 464 18.4.6 安装共享程序集 465 18.4.7 使用共享程序集 465 18.4.8 程序集的延迟签名 466 18.4.9 引用 467 18.4.10 本机映像生成器 468 18.5 配置.net应用程序 469 18.5.1 配置类别 469 18.5.2 绑定程序集 470 18.6 版本问题 471 18.6.1 版本号 472 18.6.2 通过编程方式获取版本 472 18.6.3 绑定到程序集版本 473 18.6.4 发行者策略文件 474 18.6.5 运行库的版本 475 18.7 小结 476 第19章 检测 477 19.1 代码协定 477 19.1.1 前提条件 479 19.1.2 后置条件 480 19.1.3 常量 481 19.1.4 接口的协定 481 19.2 跟踪 483 19.2.1 跟踪源 484 19.2.2 跟踪开关 485 19.2.3 跟踪侦听器 486 19.2.4 筛选器 488 19.2.5 相关性 489 19.3 事件日志 492 19.3.1 事件日志体系结构 493 19.3.2 事件日志类 494 19.3.3 创建事件源 494 19.3.4 写入事件日志 495 19.3.5 资源文件 496 19.4 性能监控 500 19.4.1 性能监控类 500 19.4.2 性能计数器生成器 500 19.4.3 添加performance counter组件 503 19.4.4 perfmon.exe 505 19.5 小结 506 第20章 线程、任务和同步 507 20.1 概述 507 20.2 异步委托 508 20.2.1 投票 508 20.2.2 等待句柄 509 20.2.3 异步回调 510 20.3 thread类 512 20.3.1 给线程传递数据 513 20.3.2 后台线程 514 20.3.3 线程的优先级 515 20.3.4 控制线程 515 20.4 线程池 516 20.5 任务 517 20.5.1 启动任务 517 20.5.2 连续的任务 518 20.5.3 任务层次结构 519 20.5.4 任务的结果 520 20.6 parallel类 521 20.6.1 用parallel.for() 方法循环 521 20.6.2 使用parallel.foreach() 方法循环 523 20.6.3 通过parallel.invoke() 方法调用多个方法 524 20.7 取消架构 524 20.7.1 parallel.for()方法 的取消 524 20.7.2 任务的取消 526 20.8 线程问题 527 20.8.1 争用条件 527 20.8.2 死锁 530 20.9 同步 532 20.9.1 lock语句和线程安全 532 20.9.2 interlocked类 538 20.9.3 monitor类 539 20.9.4 spinlock结构 540 20.9.5 waithandle基类 540 20.9.6 mutex类 541 20.9.7 semaphore类 542 20.9.8 events类 544 20.9.9 barrier类 547 20.9.10 readerwriterlockslim 类 549 20.10 timer类 552 20.11 基于事件的异步模式 554 20.11.1 backgroundworker 类 554 20.11.2 启用取消功能 557 20.11.3 启用进度功能 558 20.11.4 创建基于事件的异步 组件 559 20.12 小结 563 第21章 安全性 565 21.1 身份验证和授权 565 21.1.1 标识和principal 565 21.1.2 角色 567 21.1.3 声明基于角色的安全性 567 21.1.4 客户端应用程序服务 568 21.2 加密 573 21.2.1 签名 575 21.2.2 交换密钥和安全传输 576 21.3 资源的访问控制 579 21.4 代码访问安全性 582 21.4.1 第2级安全透明性 582 21.4.2 权限 583 21.5 使用证书发布代码 588 21.6 小结 588 第22章 本地化 591 22.1 system.globalization 名称空间 591 22.1.1 unicode问题 592 22.1.2 区域性和区域 592 22.1.3 使用区域性 596 22.1.4 排序 600 22.2 资源 602 22.2.1 创建资源文件 602 22.2.2 资源文件生成器 602 22.2.3 resourcewriter 603 22.2.4 使用资源文件 604 22.2.5 system.resources 名称空间 607 22.3 使用visual studio的 windows窗体本地化 607 22.3.1 通过编程方式修改 区域性 612 22.3.2 使用自定义资源文件 613 22.3.3 资源的自动回退 614 22.3.4 外包翻译 615 22.4 用asp.net本地化 615 22.5 用wpf本地化 617 22.5.1 用于wpf的.net资源 618 22.5.2 xaml资源字典 619 22.6 自定义资源读取器 622 22.6.1 创建databaseresource reader类 623 22.6.2 创建databaseresource set类 625 22.6.3 创建databaseresource manager类 625 22.6.4 databaseresourcereader 的客户端应用程序 626 22.7 创建自定义区域性 626 22.8 小结 628 第23章 system.transactions 629 23.1 概述 629 23.1.1 事务处理阶段 630 23.1.2 acid属性 630 23.2 数据库和实体类 631 23.3 传统的事务 633 23.3.1 ado.net事务 633 23.3.2 system.enterprise services 634 23.4 system.transactions 635 23.4.1 可提交的事务 636 23.4.2 事务处理的升级 638 23.4.3 依赖事务 640 23.4.4 环境事务 642 23.5 隔离级别 649 23.6 自定义资源管理器 650 23.7 windows 7和windows server 2008的事务 656 23.8 小结 660 第24章 网络 661 24.1 webclient类 661 24.1.1 下载文件 662 24.1.2 基本的webclient示例 662 24.1.3 上传文件 663 24.2 webrequest类和 webresponse类 664 24.2.1 身份验证 666 24.2.2 使用代理 666 24.2.3 异步页面请求 666 24.3 把输出结果显示为 html页面 667 24.3.1 从应用程序中进行 简单的web浏览 667 24.3.2 启动internet explorer 实例 669 24.3.3 给应用程序提供更多 的ie类型特性 669 24.3.4 使用webbrowser控件 打印 674 24.3.5 显示请求页面的代码 674 24.3.6 webrequest类 和webresponse类的 层次结构 676 24.4 实用工具类 676 24.4.1 uri 676 24.4.2 ip地址和dns名称 677 24.5 较低层的协议 679 24.5.1 使用smtpclient 680 24.5.2 使用tcp类 682 24.5.3 tcpsend和tcpreceive 示例 682 24.5.4 tcp和udp 684 24.5.5 udp类 684 24.5.6 socket类 685 24.6 小结 689 第25章 windows服务 691 25.1 windows服务 691 25.2 windows服务的体系结构 692 25.2.1 服务程序 692 25.2.2 服务控制程序 694 25.2.3 服务配置程序 694 25.2.4 windows服务的类 694 25.3 创建windows服务程序 694 25.3.1 创建服务的核心功能 695 25.3.2 quoteclient示例 698 25.3.3 windows服务程序 699 25.3.4 线程和服务 703 25.3.5 服务的安装 704 25.3.6 安装程序 704 25.4 服务的监视和控制 708 25.4.1 mmc管理单元 708 25.4.2 net.exe实用程序 709 25.4.3 sc.exe实用程序 710 25.4.4 visual studio server explorer 710 25.4.5 编写自定义 servicecontroller类 710 25.5 故障排除和事件日志 718 25.6 小结 719 第26章 互操作性 721 26.1 .net和com 721 26.1.1 元数据 722 26.1.2 释放内存 722 26.1.3 接口 722 26.1.4 方法的绑定 724 26.1.5 数据类型 724 26.1.6 注册 724 26.1.7 线程 725 26.1.8 错误处理 726 26.1.9 事件 727 26.2 编组 727 26.3 从.net客户端中使用 com组件 728 26.3.1 创建com组件 728 26.3.2 创建rcw 734 26.3.3 使用rcw 735 26.3.4 使用com服务器和 动态语言扩展 736 26.3.5 线程问题 737 26.3.6 添加连接点 737 26.4 从com客户端中使用 .net组件 739 26.4.1 ccm 740 26.4.2 创建.net组件 740 26.4.3 创建类型库 741 26.4.4 com互操作特性 743 26.4.5 com注册 745 26.4.6 创建com客户端 应用程序 746 26.4.7 添加连接点 747 26.4.8 用sink对象创建 客户端 748 26.5 平台调用 750 26.6 小结 754 第27章 核心xaml 755 27.1 概述 755 27.1.1 元素映射到.net 对象上 756 27.1.2 使用自定义.net类 757 27.1.3 把特性用作属性 759 27.1.4 把特性用作元素 759 27.1.5 基本的.net类型 760 27.1.6 集合 760 27.1.7 构造函数 761 27.2 依赖属性 761 27.2.1 创建依赖类型 762 27.2.2 强制值回调 763 27.2.3 值变更回调和事件 764 27.2.4 事件的冒泡和隧道 764 27.3 附加属性 767 27.4 标记扩展 770 27.5 创建自定义标记扩展 770 27.6 xaml定义的标记扩展 772 27.7 读写xaml 772 27.8 小结 773 第28章 managed extensibility framework 775 28.1 mef的体系结构 775 28.2 协定 782 28.3 导出 783 28.3.1 导出属性和方法 787 28.3.2 导出元数据 789 28.4 导入 791 28.5 容器和出口提供程序 794 28.6 类别 797 28.7 小结 798 第29章 文件和注册表操作 799 29.1 管理文件系统 799 29.1.1 表示文件和文件夹 的.net类 800 29.1.2 path类 803 29.1.3 fileproperties示例 803 29.2 移动、复制和删除文件 808 29.2.1 filepropertiesandmovement 示例 808 29.2.2 filepropertiesandmovement 示例的代码 809 29.3 读写文件 812 29.3.1 读取文件 812 29.3.2 写入文件 814 29.3.3 流 815 29.3.4 缓存的流 816 29.3.5 使用filestream类读写 二进制文件 816 29.3.6 读写文本文件 821 29.4 映射内存的文件 827 29.5 读取驱动器信息 829 29.6 文件的安全性 831 29.6.1 从文件中读取acl 831 29.6.2 从目录中读取acl 832 29.6.3 添加和删除文件中 的acl项 833 29.7 读写注册表 835 29.7.1 注册表 835 29.7.2 .net注册表类 837 29.8 读写独立存储器 839 29.9 小结 844 第ⅳ部分 数 据 第30章 核心ado.net 847 30.1 ado.net概述 847 30.1.1 名称空间 848 30.1.2 共享类 848 30.1.3 数据库专用的类 849 30.2 使用数据库连接 850 30.2.1 管理连接字符串 851 30.2.2 高效地使用连接 852 30.2.3 事务 854 30.3 命令 855 30.3.1 执行命令 856 30.3.2 调用存储过程 860 30.4 快速数据访问: 数据读取器 862 30.5 管理数据和关系: dataset类 865 30.5.1 数据表 866 30.5.2 数据列 866 30.5.3 数据关系 871 30.5.4 数据约束 872 30.6 xml架构:用xsd 生成代码 875 30.7 填充dataset类 881 30.7.1 用数据适配器填充 dataset 882 30.7.2 从xml中填充 dataset类 883 30.8 持久化dataset类的修改 883 30.8.1 通过数据适配器进行 更新 883 30.8.2 写入xml输出结果 886 30.9 使用ado.net 887 30.9.1 分层开发 887 30.9.2 生成sql server的键 888 30.9.3 命名约定 891 30.10 小结 892 第31章 ado.net entity framework 893 31.1 ado.net entity framework概述 893 31.2 entity framework映射 894 31.2.1 逻辑层 895 31.2.2 概念层 897 31.2.3 映射层 898 31.3 entity client 899 31.3.1 连接字符串 900 31.3.2 entity sql 900 31.4 实体 901 31.5 对象上下文 904 31.6 关系 906 31.6.1 一个层次结构一个表 907 31.6.2 一种类型一个表 908 31.6.3 懒惰加载、延迟加载 和预先加载 909 31.7 对象查询 910 31.8 更新 913 31.8.1 对象跟踪 913 31.8.2 改变信息 914 31.8.3 附加和分离实体 916 31.8.4 存储实体的变化 916 31.9 linq to entities 917 31.10 小结 918 第32章 数据服务 919 32.1 概述 919 32.2 包含clr对象的自定义 宿主 920 32.2.1 clr对象 920 32.2.2 数据模型 922 32.2.3 数据服务 923 32.2.4 驻留服务 923 32.2.5 其他服务操作 924 32.3 http客户端应用程序 925 32.4 使用wcf数据服务和 ado.net entity framework 929 32.4.1 asp.net宿主和edm 929 32.4.2 使用system.data .service.client的.net 应用程序 931 32.5 小结 938 第33章 处理xml 939 33.1 .net支持的xml标准 940 33.2 system.xml名称空间 940 33.3 使用system.xml类 941 33.4 读写流格式的xml 942 33.4.1 使用 xmlreader类 942 33.4.2 使用xmlreader类进行 验证 946 33.4.3 使用xmlwriter类 947 33.5 在.net中使用dom 949 33.6 使用xpathnavigator类 954 33.6.1 system.xml.xpath 名称空间 954 33.6.2 system.xml.xsl 名称空间 959 33.6.3 调试xslt 963 33.7 xml和ado.net 965 33.7.1 将ado.net数据 转换为xml文档 965 33.7.2 把xml文档转换为 ado.net数据 970 33.8 在xml中序列化对象 972 33.9 linq to xml和.net 982 33.10 使用不同的xml对象 982 33.10.1 xdocument对象 982 33.10.2 xelement对象 983 33.10.3 xnamespace对象 984 33.10.4 xcomment对象 986 33.10.5 xattribute对象 986 33.11 使用linq查询xml 文档 987 33.11.1 查询静态的xml 文档 987 33.11.2 查询动态的xml 文档 989 33.12 xml文档的更多查询 技术 990 33.12.1 读取xml文档 990 33.12.2 写入xml文档 992 33.13 小结 993 第34章 .net编程和sql server 995 34.1 .net运行库的宿主 995 34.2 microsoft.sqlserver.server 997 34.3 用户定义的类型 998 34.3.1 创建udt 998 34.3.2 通过sql使用udt 1003 34.3.3 从客户端代码中使用 udt 1004 34.4 用户定义的聚合函数 1005 34.4.1 创建用户定义的 聚合函数 1006 34.4.2 使用用户定义的 聚合函数 1007 34.5 存储过程 1007 34.5.1 创建存储过程 1008 34.5.2 使用存储过程 1009 34.6 用户定义的函数 1010 34.6.1 创建用户定义的函数 1010 34.6.2 使用用户定义的函数 1010 34.7 触发器 1011 34.7.1 创建触发器 1011 34.7.2 使用触发器 1012 34.8 xml数据类型 1013 34.8.1 包含xml数据的表 1013 34.8.2 读取xml值 1014 34.8.3 数据的查询 1017 34.8.4 xml数据修改语言 (xml dml) 1019 34.8.5 xml索引 1020 34.8.6 强类型化的xml 1021 34.9 小结 1022 第ⅴ部分 显 示 第35章 核心wpf 1025 35.1 概述 1025 35.1.1 名称空间 1025 35.1.2 类层次结构 1027 35.2 形状 1028 35.3 几何图形 1030 35.4 变换 1032 35.5 画笔 1033 35.5.1 solidcolorbrush 1033 35.5.2 lineargradientbrush 1034 35.5.3 radialgradientbrush 1034 35.5.4 drawingbrush 1035 35.5.5 imagebrush 1035 35.5.6 visualbrush 1036 35.6 控件 1037 35.6.1 简单控件 1037 35.6.2 内容控件 1038 35.6.3 带标题的内容控件 1039 35.6.4 项控件 1040 35.6.5 带标题的项控件 1041 35.6.6 修饰 1041 35.7 布局 1042 35.7.1 stackpanel 1042 35.7.2 wrappanel 1043 35.7.3 canvas 1044 35.7.4 dockpanel 1044 35.7.5 grid 1045 35.8 样式和资源 1046 35.8.1 样式 1046 35.8.2 资源 1048 35.8.3 系统资源 1049 35.8.4 从代码中访问资源 1050 35.8.5 动态资源 1050 35.8.6 资源字典 1051 35.9 触发器 1052 35.9.1 属性触发器 1053 35.9.2 多触发器 1054 35.9.3 数据触发器 1055 35.10 模板 1056 35.10.1 控件模板 1057 35.10.2 数据模板 1060 35.10.3 样式化列表框 1061 35.10.4 itemtemplate 1062 35.10.5 列表框元素的控件 模板 1064 35.11 动画 1066 35.11.1 时间轴 1066 35.11.2 非线性动画 1069 35.11.3 事件触发器 1069 35.11.4 关键帧动画 1072 35.12 可见状态管理器 1073 35.13 3-d 1076 35.13.1 模型 1077 35.13.2 照相机 1079 35.13.3 光线 1079 35.13.4 旋转 1079 35.14 小结 1080 第36章 用wpf编写业务 应用程序 1083 36.1 数据绑定 1083 36.1.1 booksdemo应用程序 1084 36.1.2 用xaml绑定 1086 36.1.3 简单对象的绑定 1088 36.1.4 更改通知 1090 36.1.5 对象数据提供程序 1092 36.1.6 列表绑定 1094 36.1.7 主从绑定 1096 36.1.8 多绑定 1097 36.1.9 优先绑定 1099 36.1.10 值的转换 1100 36.1.11 动态添加列表项 1102 36.1.12 数据模板选择器 1103 36.1.13 绑定到xml上 1105 36.1.14 绑定的验证 1107 36.2 commanding 1111 36.2.1 定义命令 1112 36.2.2 定义命令源 1113 36.2.3 命令绑定 1113 36.3 treeview 1114 36.4 datagrid 1118 36.4.1 自定义列 1120 36.4.2 行的细节 1121 36.4.3 用datagrid进行分组 1121 36.5 小结 1124 第37章 用wpf创建文档 1125 37.1 文本元素 1125 37.1.1 字体 1125 37.1.2 texteffect 1127 37.1.3 内联 1128 37.1.4 块 1130 37.1.5 列表 1132 37.1.6 表 1132 37.1.7 块的锚定 1134 37.2 流文档 1135 37.3 固定文档 1136 37.4 xps文档 1140 37.5 打印 1141 37.5.1 用printdialog打印 1142 37.5.2 打印可见元素 1142 37.6 小结 1144 第38章 silverlight 1145 38.1 wpf和silverlight的比较 1145 38.2 创建silverlight项目 1146 38.3 导航 1148 38.4 网络 1152 38.4.1 创建ado.net entity data model 1153 38.4.2 为silverlight客户端 创建wcf服务 1153 38.4.3 调用wcf服务 1155 38.4.4 使用wcf数据服务 1158 38.4.5 使用system.net访问 服务 1160 38.5 浏览器集成 1162 38.5.1 调用javascript 1162 38.5.2 javascript调用 silverlight 1163 38.6 在浏览器外运行的 silverlight应用程序 1164 38.7 小结 1167 第39章 windows窗体 1169 39.1 创建windows窗体 应用程序 1169 39.2 control类 1175 39.2.1 大小和位置 1175 39.2.2 外观 1176 39.2.3 用户交互操作 1176 39.2.4 windows功能 1177 39.2.5 其他功能 1177 39.3 标准控件和组件 1178 39.3.1 button控件 1178 39.3.2 checkbox控件 1178 39.3.3 radiobutton控件 1179 39.3.4 combobox控件、 listbox控件和 checkedlistbox控件 1179 39.3.5 datagridview控件 1180 39.3.6 datetimepicker控件 1188 39.3.7 errorprovider组件 1188 39.3.8 imagelist组件 1189 39.3.9 label控件 1189 39.3.10 listview控件 1189 39.3.11 picturebox控件 1189 39.3.12 progressbar控件 1190 39.3.13 textbox控件、 richtextbox控件与 maskedtextbox控件 1190 39.3.14 panel控件 1191 39.3.15 flowlayoutpanel和 tablelayoutpanel 控件 1191 39.3.16 splitcontainer控件 1192 39.3.17 tabcontrol控件和 tabpages控件 1192 39.3.18 toolstrip控件 1193 39.3.19 menustrip控件 1194 39.3.20 contextmenustrip 控件 1194 39.3.21 toolstripmenuitem 控件 1194 39.3.22 toolstripmanager类 1194 39.3.23 toolstripcontainer 控件 1195 39.4 窗体 1195 39.4.1 form类 1195 39.4.2 多文档界面 1199 39.4.3 创建自己的用户控件 1200 39.5 小结 1200 第40章 核心asp.net 1201 40.1 asp.net概述 1201 40.1.1 asp.net文件的 处理方式 1202 40.1.2 web站点和web 应用程序 1202 40.1.3 asp.net中的状态 管理 1203 40.2 asp.net web窗体 1203 40.2.1 asp.net代码模型 1207 40.2.2 asp.net服务器控件 1208 40.3 ado.net和数据绑定 1222 40.3.1 更新事件登记 应用程序 1222 40.3.2 数据绑定的更多内容 1229 40.4 应用程序配置 1234 40.5 小结 1236 第41章 asp.net的功能 1237 41.1 用户控件和自定义控件 1238 41.1.1 用户控件 1238 41.1.2 pcsdemosite中的 用户控件 1242 41.1.3 自定义控件 1243 41.2 母版页 1247 41.2.1 在web页面中 访问母版页 1248 41.2.2 嵌套的母版页 1248 41.2.3 pcsdemosite中 的母版页 1249 41.3 站点导航 1250 41.3.1 添加站点地图文件 1251 41.3.2 pcsdemosite中 的导航 1252 41.4 安全性 1253 41.4.1 使用security setup 添加forms身份验证 功能 1254 41.4.2 实现登录系统 1255 41.4.3 web 登录服务器控件 1255 41.4.4 保护目录 1256 41.4.5 pcsdemosite中的 安全性 1257 41.5 主题 1259 41.5.1 把主题应用于页面 1259 41.5.2 定义主题 1260 41.5.3 pcsdemosite中的 主题 1260 41.6 web部件 1263 41.6.1 web部件应用程序 组件 1263 41.6.2 web部件示例 1264 41.7 asp.net ajax 1270 41.8 ajax的概念 1271 41.9 asp.net ajax 1273 41.9.1 核心功能 1273 41.9.2 asp.net ajax control toolkit 1275 41.10 asp.net ajax网站 示例 1276 41.11 支持asp.net ajax的 网站配置 1278 41.12 添加asp.net ajax 功能 1279 41.12.1 scriptmanager控件 1280 41.12.2 使用updatepanel 控件 1281 41.12.3 使用updateprogress 1283 41.12.4 使用扩展控件 1284 41.13 使用ajax库 1286 41.13.1 给web页面添加 javascript 1286 41.13.2 全局实用程序函数 1287 41.13.3 使用ajax库 javascript oop 扩展 1287 41.13.4 pagerequestmanager 对象和application 对象 1289 41.13.5 javascript的调试 1292 41.13.6 异步调用web方法 1293 41.13.7 asp.net应用程序 服务 1294 41.14 小结 1294 第42章 asp.net动态数据 和mvc 1297 42.1 路由 1298 42.1.1 查询字符串参数 1298 42.1.2 定义路由 1300 42.1.3 使用路由参数 1303 42.2 动态数据 1305 42.2.1 创建动态数据网站 1305 42.2.2 定制动态数据网站 1310 42.2.3 进一步开发 1314 42.3 mvc 1314 42.3.1 mvc的含义 1314 42.3.2 asp.net mvc的 含义 1315 42.3.3 简单的asp.net mvc 应用程序 1315 42.3.4 定制asp.net mvc 应用程序 1321 42.3.5 进一步开发 1329 42.4 小结 1330 第ⅵ部分 通 信 第43章 wcf 1333 43.1 wcf概述 1333 43.1.1 soap 1335 43.1.2 wsdl 1335 43.1.3 rest 1335 43.1.4 json 1336 43.2 简单的服务和客户端 1336 43.2.1 服务协定 1337 43.2.2 服务的实现 1338 43.2.3 wcf服务宿主和 wcf测试客户端 1338 43.2.4 自定义服务宿主 1340 43.2.5 wcf客户端 1342 43.2.6 诊断 1343 43.3 协定 1345 43.3.1 数据协定 1345 43.3.2 版本问题 1346 43.3.3 服务协定 1346 43.3.4 消息协定 1347 43.4 服务的实现 1348 43.4.1 以编程方式创建 客户端 1351 43.4.2 错误处理 1352 43.5 绑定 1353 43.6 宿主 1356 43.6.1 自定义宿主 1356 43.6.2 was宿主 1357 43.6.3 预配置的宿主类 1357 43.7 客户端 1358 43.8 双工通信 1360 43.9 小结 1362 第44章 windows wf 4 1363 44.1 hello world示例 1363 44.2 活动 1365 44.2.1 if活动 1366 44.2.2 invokemethod活动 1367 44.2.3 parallel活动 1367 44.2.4 delay活动 1368 44.2.5 pick活动 1368 44.3 自定义活动 1369 44.3.1 活动的验证 1370 44.3.2 设计器 1371 44.3.3 自定义复合活动 1373 44.4 工作流 1375 44.4.1 实参和变量 1376 44.4.2 workflowapplication 1377 44.4.3 workflowservicehost 1381 44.4.4 驻留设计器 1386 44.5 小结 1391 第45章 对等网络 1393 45.1 p2p网络概述 1393 45.1.1 客户端-服务器体系 结构 1393 45.1.2 p2p体系结构 1394 45.1.3 p2p体系结构的挑战 1395 45.1.4 p2p术语 1396 45.1.5 p2p解决方案 1396 45.2 microsoft windows peer-to-peer networking 1396 45.2.1 pnrp 1396 45.2.2 people near me 1399 45.3 构建p2p应用程序 1400 45.3.1 system.net.peertopeer 1400 45.3.2 system.net.peertopeer .collaboration 1405 45.4 小结 1408 第46章 消息队列 1409 46.1 概述 1409 46.1.1 使用消息队列的场合 1410 46.1.2 消息队列功能 1411 46.2 message queuing产品 1412 46.3 消息队列体系结构 1412 46.3.1 消息 1413 46.3.2 消息队列 1413 46.4 message queuing 管理工具 1414 46.4.1 创建消息队列 1414 46.4.2 消息队列属性 1415 46.5 消息队列的编程实现 1415 46.5.1 创建消息队列 1415 46.5.2 查找队列 1416 46.5.3 打开已知队列 1417 46.5.4 发送消息 1418 46.5.5 接收消息 1421 46.6 课程订单应用程序 1423 46.6.1 课程订单类库 1423 46.6.2 课程订单消息 发送程序 1424 46.6.3 发送优先级和可恢复 的消息 1425 46.6.4 课程订单消息接收 程序 1426 46.7 接收结果 1429 46.7.1 确认队列 1430 46.7.2 响应队列 1430 46.8 事务队列 1431 46.9 消息队列和wcf 1432 46.9.1 带数据协定的实体类 1432 46.9.2 wcf服务协定 1433 46.9.3 wcf消息接收 应用程序 1434 46.9.4 wcf消息发送 应用程序 1437 46.10 消息队列的安装 1438 46.11 小结 1438 第47章 syndication 1441 47.1 system.servicemodel. syndication名称空间 概述 1441 47.2 读取联合源的示例 1442 47.3 联合源的示例 1444 47.4 小结 1449 第ⅶ部分 附 录 附录a 1453 ***以下内容见随书附赠光盘*** 第48章 使用gdi+绘图 e1 48.1 理解绘图规则 e1 48.1.1 gdi和gdi+ e2 48.1.2 绘制图形 e3 48.1.3 使用onpaint()方法 绘制图形 e6 48.1.4 使用剪切区域 e7 48.2 测量坐标和区域 e9 48.2.1 point和pointf结构 e9 48.2.2 size和sizef结构 e10 48.2.3 rectangle和rectanglef 结构 e11 48.2.4 region e12 48.3 调试须知 e13 48.4 绘制可滚动的窗口 e14 48.5 世界、页面和设备坐标 e18 48.6 颜色 e19 48.6.1 rgb值 e19 48.6.2 命名颜色 e20 48.6.3 图形显示模式和安全 的调色板 e20 48.6.4 安全调色板 e21 48.7 画笔和钢笔 e21 48.7.1 画笔 e22 48.7.2 钢笔 e23 48.8 绘制图形和线条 e23 48.9 显示图像 e25 48.10 处理图像时的问题 e27 48.11 绘制文本 e28 48.12 简单的文本示例 e29 48.13 字体和字体系列 e30 48.14 示例:枚举字体系列 e31 48.15 编辑文本文档: capseditor示例 e33 48.15.1 invalidate()方法 e37 48.15.2 计算项的大小和文档 的大小 e38 48.15.3 onpaint()方法 e39 48.15.4 坐标转换 e41 48.15.5 响应用户的输入 e42 48.16 打印 e45 48.17 小结 e50 第49章 vsto e51 49.1 vsto概述 e51 49.1.1 项目类型 e52 49.1.2 项目功能 e54 49.2 vsto项目基础 e55 49.2.1 office对象模型 e55 49.2.2 vsto名称空间 e55 49.2.3 宿主项和宿主控件 e56 49.2.4 基本的vsto项目 结构 e57 49.2.5 globals类 e60 49.2.6 事件处理 e60 49.3 构建vsto解决方案 e61 49.3.1 管理应用程序级插件 e62 49.3.2 与应用程序和文档 交互操作 e63 49.3.3 ui的自定义 e64 49.4 示例应用程序 e68 49.5 小结 e78 第50章 maf e79 50.1 maf体系结构 e79 50.1.1 管道 e80 50.1.2 发现 e81 50.1.3 激活和隔离 e82 50.1.4 协定 e83 50.1.5 生命周期 e84 50.1.6 版本问题 e85 50.2 插件示例 e86 50.2.1 插件协定 e86 50.2.2 计算器插件视图 e87 50.2.3 计算器插件适配器 e88 50.2.4 计算器插件 e90 50.2.5 计算器宿主视图 e91 50.2.6 计算机宿主适配器 e91 50.2.7 计算器宿主 e93 50.2.8 其他插件 e97 50.3 小结 e97 第51章 enterprise services e99 51.1 使用enterprise services e99 51.1.1 简史 e100 51.1.2 使用enterprise services 的场合 e100 51.1.3 重要功能 e101 51.2 创建简单的com+应用 程序 e103 51.2.1 servicedcomponent类 e103 51.2.2 程序集的属性 e103 51.2.3 创建组件 e104 51.3 部署 e106 51.3.1 自动部署 e106 51.3.2 手工部署 e106 51.3.3 创建安装软件包 e106 51.4 组件服务管理器 e107 51.5 客户端应用程序 e108 51.6 事务 e109 51.6.1 事务的特性 e109 51.6.2 事务的结果 e110 51.7 示例应用程序 e111 51.7.1 实体类 e111 51.7.2 ordercontrol组件 e113 51.7.3 orderdata组件 e114 51.7.4 orderlinedata组件 e116 51.7.5 客户端应用程序 e117 51.8 集成wcf和enterprise services e118 51.8.1 wcf服务外观 e118 51.8.2 客户端应用程序 e122 51.9 小结 e123 第52章 目录服务 e125 52.1 active directory的 体系结构 e126 52.1.1 active directory的 功能 e126 52.1.2 active directory的 概念 e126 52.1.3 active directory数据 的特征 e129 52.1.4 指定架构 e130 52.2 active directory的 管理工具 e131 52.2.1 active directory users and computers工具 e131 52.2.2 adsi edit工具 e132 52.3 active directory编程 e133 52.3.1 system.directoryservices 名称空间中的类 e134 52.3.2 绑定到directory services e134 52.3.3 获取目录项 e138 52.3.4 对象集合 e140 52.3.5 缓存 e141 52.3.6 创建新对象 e141 52.3.7 更新目录项 e142 52.3.8 访问本地adsi对象 e143 52.3.9 在active directory 中搜索 e144 52.4 搜索用户对象 e148 52.4.1 用户界面 e148 52.4.2 获取架构命名上下文 e149 52.4.3 获取user类的属性名 e149 52.4.4 搜索用户对象 e150 52.5 账户管理 e152 52.5.1 显示用户信息 e152 52.5.2 创建用户 e153 52.5.3 重置密码 e153 52.5.4 创建组 e154 52.5.5 在组中添加用户 e154 52.5.6 查找用户 e154 52.6 dsml e155 52.6.1 system.directoryservices. protocols名称空间中 的类 e156 52.6.2 用dsml搜索 active directory对象 e156 52.7 小结 e157 第53章 c#、visual basic、 c++/cli和f# e159 53.1 名称空间 e160 53.2 定义类型 e161 53.2.1 引用类型 e161 53.2.2 值类型 e162 53.2.3 类型推断 e163 53.2.4 接口 e164 53.2.5 枚举 e165 53.3 方法 e166 53.3.1 方法的参数和返回 类型 e166 53.3.2 参数修饰符 e167 53.3.3 构造函数 e168 53.3.4 属性 e170 53.3.5 对象初始值设定项 e171 53.3.6 扩展方法 e171 53.4 静态成员 e172 53.5 数组 e173 53.6 控制语句 e174 53.6.1 if语句 e174 53.6.2 条件操作符 e174 53.6.3 switch语句 e175 53.7 循环 e176 53.7.1 for语句 e176 53.7.2 while和do…while 语句 e177 53.7.3 foreach语句 e178 53.8 异常处理 e178 53.9 继承 e180 53.9.1 访问修饰符 e180 53.9.2 关键字 e181 53.10 资源管理 e183 53.10.1 idisposable接口的 实现 e183 53.10.2 using语句 e184 53.10.3 重写finalize()方法 e184 53.11 委托 e186 53.12 事件 e188 53.13 泛型 e190 53.14 linq查询 e192 53.15 c++/cli混合本地代码 和托管代码 e192 53.16 c#的特殊功能 e193 53.17 小结 e194 第54章 .net remoting e195 54.1 使用.net remoting的 原因 e195 54.2 .net remoting术语详解 e197 54.2.1 客户端通信 e198 54.2.2 服务器端通信 e199 54.3 上下文 e199 54.3.1 激活 e200 54.3.2 特性和属性 e200 54.3.3 上下文之间的通信 e201 54.4 远程对象、客户端和 服务器 e201 54.4.1 远程对象 e201 54.4.2 简单的服务器应用 程序 e202 54.4.3 简单的客户端应用 程序 e203 54.5 .net remoting体系结构 e204 54.5.1 信道 e204 54.5.2 格式化程序 e207 54.5.3 channelservices和 remotingconfiguration e207 54.5.4 对象的激活 e209 54.5.5 消息接收器 e212 54.5.6 在远程方法中传递对象 e213 54.5.7 生命周期管理 e216 54.6 配置文件 e218 54.6.1 知名对象的服务器 配置 e220 54.6.2 知名对象的客户端 配置 e220 54.6.3 客户端激活的对象的 服务器配置 e221 54.6.4 客户端激活的对象的 客户端配置 e222 54.6.5 使用配置文件的 服务器代码 e222 54.6.6 使用配置文件的 客户端代码 e223 54.6.7 客户端信道的延迟 加载 e223 54.6.8 调试配置 e224 54.6.9 配置文件中的生命 周期服务 e224 54.6.10 格式化程序提供程序 e225 54.7 在asp.net中驻留远程 服务器 e225 54.8 类、接口和soapsuds e227 54.8.1 接口 e227 54.8.2 soapsuds e227 54.9 异步远程调用 e228 54.9.1 使用委托和 .net remoting e228 54.9.2 oneway特性 e229 54.10 .net remoting的 安全性 e229 54.11 远程处理和事件 e230 54.11.1 远程对象 e231 54.11.2 事件参数 e232 54.11.3 服务器 e233 54.11.4 服务器配置文件 e233 54.11.5 事件接收器 e234 54.11.6 客户端 e234 54.11.7 客户端配置文件 e235 54.11.8 运行程序 e236 54.12 调用上下文 e236 54.13 小结 e237 第55章 web服务和asp.net e239 55.1 soap e240 55.2 wsdl e241 55.3 web服务 e242 55.3.1 提供web服务 e242 55.3.2 使用web服务 e246 55.4 扩充事件登记示例 e248 55.4.1 事件登记 web服务 e249 55.4.2 事件登记客户端 e253 55.5 使用soap标题交换 数据 e256 55.6 小结 e261 第56章 linq to sql e263 56.1 linq to sql和 visual studio 2010 e264 56.1.1 调用products表 e265 56.1.2 添加linq to sql类 e265 56.1.3 o/r设计器概述 e266 56.1.4 创建product对象 e267 56.2 对象如何映射到linq 对象上 e269 56.2.1 datacontext对象 e270 56.2.2 table[tentity]对象 e274 56.3 脱离o/r设计器工作 e274 56.3.1 创建自己的自定义 对象 e274 56.3.2 通过自定义对象和 linq查询 e275 56.3.3 通过查询限制所调用 的列 e276 56.3.4 使用列名 e277 56.3.5 创建自己的 datacontext对象 e278 56.4 自定义对象和o/r 设计器 e279 56.5 查询数据库 e280 56.5.1 使用查询表达式 e280 56.5.2 查询表达式 e281 56.5.3 使用表达式筛选 e282 56.5.4 执行连接 e282 56.5.5 分组项 e284 56.6 存储过程 e285 56.7 小结 e286 第57章 wpf 3.0 e287 57.1 hello world示例 e287 57.2 活动 e288 57.2.1 ifelseactivity e289 57.2.2 parallelactivity e290 57.2.3 callexternalmethod activity e291 57.2.4 delayactivity e291 57.2.5 listenactivity e292 57.2.6 活动执行模型 e293 57.3 自定义活动 e293 57.3.1 活动的验证 e295 57.3.2 主题和设计器 e296 57.3.3 activitytoolboxitem 和图标 e297 57.3.4 自定义复合活动 e299 57.4 工作流 e305 57.4.1 顺序工作流 e305 57.4.2 状态机工作流 e305 57.4.3 给工作流传递参数 e307 57.4.4 从工作流中返回结果 e308 57.4.5 将参数绑定到活动上 e309 57.5 工作流运行库 e310 57.6 工作流服务 e310 57.6.1 持久性服务 e312 57.6.2 跟踪服务 e313 57.6.3 自定义服务 e315 57.7 与wcf集成 e316 57.8 驻留工作流 e318 57.9 工作流设计器 e319 57.10 从wf 3.x迁移到wf 4 e320 57.10.1 把活动代码提取到 服务中 e320 57.10.2 删除代码活动 e320 57.10.3 同时运行wf 3.x 和4 e321 57.10.4 考虑把状态机迁移到 流程图上 e321 57.11 小结 e321 ................ ..................
13.16MB
懒工作通OA
2012-10-11懒人工作通 网络智能办公系统是适用于企事业单位的通用型网络办公软件,融合了云创科技长期从事管理软件开发的丰富经验与先进技术,该系统采用领先的B/S(浏览器/服务器)操作方式,使得网络办公不受地域限制。 懒人工作通 系统集成了包括内部电子邮件、资讯和公告通知、日程安排、即时通讯、考勤管理、工作汇报、工作流程、公文流转签发和签收、电子印章与电子签名、会议管理、通讯录、论坛、投票、聊天室、云计算手写板、CRM、网络硬盘、短信息提醒、网址大全、历史今天、万年历、记事便笺等数十个极具价值的功能模块,面向集团应用,支持任意多级部门。操作简单、上手快、易用性强,一般懂得上网的用户几乎不用培训就可以开始使用。采用智能流程定制技术可以实现任意业务流程模型、表单、文件流转及审批,同时可以实现公文审批电子印章和签名等功能。 懒人工作通 在功能上注重实用、易用、安全、稳定,在系统安装上更提供了采用独有技术开发的智能向导安装工具和完善丰富的安装、使用教程手册,用户可在短时间内自行安装完毕,无需专业人员即可自行安装和维护。在性能方面也表现优异,使用普通PC服务器即可实现百人级别的并发应用。 懒人工作通 采用基于WEB的企业计算,采用了世界上最先进的微软技术:C#语言、SqlServer数据库引擎和IIS服务器,性能稳定可靠。数据存取集中控制,避免了数据泄漏的可能。提供数据备份工具,保护系统数据安全。多级的权限控制,完善的密码验证与登录机制更加强了系统安全性。 采用B/S三层结构(完全基于WEB开发); 采用C#,遵循Mircrosoft .Net2.0标准;(.net2.0 + SqlServer) 本系统实用客户群体:信息化刚起步的企事业单位。 初始管理员用户名和密码:manager 123456
19.93MB
C#开发典型模块大全(光盘)第一部分
2010-04-26明日科技出版的c#开发典型模块大全配套光盘,要的可以下载,因大小受限,分开上传! 第1章 认识C#及开发环境 1.1 C#概述 1.1.1 C#发展历程 1.1.2 C#语言编程环境 1.2.NETFramework2.0简介 1.2.1 什么是.NETFramework2.0 1.2.2.NETFramework2.0特性 1.3 安装集成开发环境VisualStudio2005 1.3.1 安装VisualStudio2005开发环境 1.3.2 安装MSDN帮助 1.3.3 如何使用MSDN帮助 1.3.4 利用MSDN帮助附带的示例学习编程 1.4 启动VisualStudio2005开发环境 1.4.1 启动VisualStudio2005 1.4.2 创建项目 1.5 熟悉VisualStudio2005集成开发环境 1.5.1 新特性 1.5.2 主窗口 1.5.3 菜单栏 1.5.4 工具栏 1.5.5 文档窗口 1.5.6 工具箱窗口 1.5.7 解决方案资源管理器窗口 1.5.8 属性窗口 1.5.9 代码编辑器 1.5.10 “错误列表”面板 1.5.11 “输出”面板 1.6 程序调试 1.6.1 断点操作 1.6.2 使用开始、中断和停止执行功能调试程序 1.6.3 单步执行 1.6.4 运行到程序的指定位置 第2章 QQ企业通 2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端登录模块设计 2.3.4 客户端QQ模块设计 2.3.5 客户端消息发送模块设计 2.3.6 服务器端控制台模块设计 第3章 SQL数据表提取器模块 3.1 概述 3.2 关键技术 3.2.1 如何备份数据库 3.2.2 如何还原数据库 3.2.3 如何附加数据库 3.2.4 如何分离数据库 3.2.5 设置数据库模式 3.3 设计过程 3.3.1 主窗体 3.3.2 获取服务器名称 3.3.3 获取所有数据库 3.3.4 获取所有数据表 3.3.5 备份数据库 3.3.6 还原数据库 3.3.7 附加数据库 3.3.8 分离数据库 3.3.9 导出表结构 3.3.10 导出数据 第4章 万能搜索模块 4.1 设计思路 4.2 关键技术 4.2.1 如何制作一个接口程序 4.2.2 实现接口程序的信息互传 4.2.3 如何将接口程序加载到其他程序中 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL语句 4.3.5 主程序获得接口信息 第5章 万能打印模块 5.1 设计思路 5.2 关键技术 5.2.1 打印设置(PrintDocument类) 5.2.2 打印预览对话框(PrintPreviewDialog) 5.2.3 打印对话框(PrintDialog) 5.2.4 获取指定颜色值和字体样式 5.2.5 DataGridView控件的相关应用 5.3 设计过程 5.3.1 打印信息的设置 5.3.2 表格样式的设置 5.3.3 打印类的设置 5.3.4 打印数据信息 第6章 决策分析模块 6.1 设计思路 6.2 关键技术 6.2.1 游标的基本操作 6.2.2 存储过程的基本操作 6.2.3 透视表的基本概念 6.2.4 统计表的基本操作 6.2.5 单击显示右键菜单 6.3 设计过程 6.3.1 主窗体的初始化 6.3.2 透视表的筛选 6.3.3 透视表的设计 6.3.4 统计表的设计 第7章 自定义图表控件 7.1 设计思路 7.2 关键技术 7.2.1 控件的生成 7.2.2 如何在项目中添加控件 7.2.3 在“属性”对话框中添加属性 7.2.4 用GDI+绘制图形 7.2.5 如何在控件上绘制图形 7.2.6 获取扇形外弧中心点的位置 7.3 设计过程 7.3.1 向自定义控件中添加属性 7.3.2 获取绘制图表的初始值数据 7.3.3 绘制标签框 7.3.4 绘制图表中的表格 7.3.5 绘制条形图 7.3.6 绘制面形图 7.3.7 绘制饼形图 第8章 电子邮件收发模块 8.1 概述 8.2 关键技术 8.2.1 Base64编码格式 8.2.2 SMTP服务 8.2.3 POP3协议 8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 数据库设计 8.3.2 系统登录 8.3.3 邮件发送实现 8.3.4 为邮件上传多个附件 8.3.5 邮件接收实现 8.3.6 查看邮件详细信息 8.3.7 下载附件的实现 8.3.8 删除邮件实现 8.3.9 用户管理 第9章 短信群发模块 9.1 设计思路 9.2 关键技术 9.2.1 短信猫中API函数的使用 9.2.2 短信猫中的短信接收格式 9.2.3 窗体间的互操作 9.2.4 锁定模块主窗体 9.2.5 使用ADO.NET连接Access数据库 9.3 设计过程 9.3.1 数据库设计 9.3.2 群发短信实现 9.3.3 已发送短信管理 9.3.4 接收短信实现 9.3.5 常用联系人管理 9.3.6 常用短语管理 第10章 桌面精灵模块 10.1 概述 10.2 关键技术 10.2.1 阴阳历转换算法 10.2.2 调用系统API实现鼠标穿透效果 10.2.3 修改注册表控制程序开机自启动 10.2.4 通过控制窗体透明度实现日历透明显示效果 10.2.5 拖动无标题栏窗体 10.2.6 将窗体的关闭位置写入到注册表中 10.2.7 将程序图标写入到托盘 10.3 设计过程 10.3.1 桌面精灵模块公共类设计 10.3.2 当前日期的农历、天干地支年、节日及星座显示 10.3.3 定时提醒的实现 10.3.4 日历窗体效果控制 10.3.5 转到某天、某周、某月及某年的实现 10.3.6 节日管理 10.3.7 提醒管理 第11章 文件批量处理器 11.1 概述 11.2 关键技术 11.2.1 文件流技术 11.2.2 文件解压缩技术 11.2.3 获取系统文件及文件夹图标 11.2.4 获取指定目录下的所有文件及文件夹 11.2.5 Word操作技术 11.2.6 进度条的显示 11.2.7 对ListView控件中的项进行排序 11.3 设计过程 11.3.1 主窗体预览 11.3.2 批量复制、剪切文件 11.3.3 批量复制、剪切文件夹 11.3.4 批量重命名文件 11.3.5 批量删除文件及文件夹 11.3.6 搜索文件及文件夹 11.3.7 批量压缩、解压文件 11.3.8 分割、合并文件 第12章 图片管理工具模块 12.1 概述 12.2 关键技术 12.2.1 上下移动ListBox选中项 12.2.2 将文件复制到剪切板 12.2.3 格式转换 12.2.4 图片幻灯片 12.2.5 图片旋转 12.3 设计过程 12.3.1 主窗体 12.3.2 打开图片目录 12.3.3 图片格式转换 12.3.4 设为桌面背景 12.3.5 图片特效 12.3.6 图片调节 12.3.7 图片水印 12.3.8 幻灯片放映 12.3.9 图片打印 第13章 FTP文件管理模块 13.1 设计思路 13.2 关键技术 13.2.1 架设FTP服务器 13.2.2 登录FTP服务器 13.2.3 获取服务器上文件的大小 13.2.4 向FTP服务器发送命令 13.2.5 调用系统API 13.3 设计过程 13.3.1 主窗体设计 13.3.2 登录FTP服务器 13.3.3 获取本地磁盘 13.3.4 获取指定磁盘中的文件 13.3.5 获取本地磁盘中文件的图标 13.3.6 获取FTP服务器中的所有文件 13.3.7 批量上传文件 13.3.8 批量下载文件 13.3.9 删除FTP中的文件或文件夹 第14章 魔法兔子模块 14.1 概述 14.2 关键技术 14.2.1 获取进程信息 14.2.2 获取计算机信息 14.2.3 修改注册表 14.3 设计过程 14.3.1 主窗体 14.3.2 功能菜单设计 14.3.3 系统检测 14.3.4 系统优化 14.3.5 超级工具 14.3.6 实用工具 14.3.7 任务管理器 14.3.8 选项设置 第15章 学生考试模块 15.1 设计思路 15.2 关键技术 15.2.1 获取试题数目 15.2.2 验证用户名和密码 15.2.3 随机抽取试题 15.2.4 自动评分 15.3 设计过程 15.3.1 数据库设计 15.3.2 公共类设计 15.3.3 登录验证 15.3.4 主窗体实现 15.3.5 开始考试 15.3.6 修改密码 15.3.7 分数查询 15.3.8 管理员界面 15.3.9 用户管理 15.3.10 成绩查询 15.3.11 考试设置 15.3.12 添加试题 15.3.13 修改试题 第16章 网页浏览器模块 16.1 概述 16.2 关键技术 16.2.1 网页浏览器核心控件 16.2.2 网页多页面显示 16.2.3 获取网页源码 16.3 设计过程 16.3.1 主窗体 16.3.2 查看网页源码 16.3.3 添加到收藏夹 16.3.4 整理收藏夹 第17章 电话客服管理模块 17.1 设计思路 17.2 关键技术 17.2.1 语音卡中的API函数 17.2.2 硬件语音卡驱动分析 17.2.3 窗体间传值 17.2.4 导航菜单的制作 17.3 设计过程 17.3.1 数据库设计 17.3.2 模块主窗体设计 17.3.3 自动语音处理 17.3.4 通话管理实现 17.3.5 员工管理实现 17.3.6 产品类别管理 第18章 多媒体播放器 18.1 设计思路 18.2 关键技术 18.2.1 窗体间的信息传递 18.2.2 AxWindowsMediaPlayer控件的相关应用 18.2.3 在列表框中动态移动选中的项 18.2.4 如何在文件夹中遍历文件 18.2.5 如何实现播放进度条 18.3 设计过程 18.3.1 磁性窗体的设置 18.3.2 播放窗体的设计 18.3.3 列表窗体的设计 18.3.4 歌词窗体的设计 第19章 屏幕录像模块 19.1 概述 19.2 关键技术 19.2.1 如何抓取屏幕 19.2.2 创建AVI文件 19.2.3 向AVI文件中添加视频 19.2.4 分解AVI文件 19.2.5 设置快捷键 19.3 设计过程 19.3.1 主窗体设计 19.3.2 抓图功能 19.3.3 选项设置 19.3.4 屏幕录像 19.3.5 视频分割 第20章 EXE文件加密器 20.1 设计思路 20.2 关键技术 20.2.1 FileStream对象 20.2.2 文件的读写操作 20.2.3 如何获取两个日期的月份差 20.2.4 获取两个日期的相差天数 20.2.5 载取字符串中的指定字符 20.3 设计过程 20.3.1 获取加密字符串的信息 20.3.2 对生成后的数据进行加密 20.3.3 对EXE文件进行加密 20.3.4 解密文件的设置 第21章 视频监控模块 21.1 设计思路 21.2 关键技术 21.2.1 认识视频监控卡 21.2.2 视频监控卡中API函数的使用 21.2.3 Pelco-D协议 21.2.4 串口通信技术 21.2.5 WMI类的使用 21.2.6 注册表技术 21.3 设计过程 21.3.1 视频监控实现 21.3.2 云台控制 21.3.3 色彩控制 21.3.4 图像抓拍及生成监控录像 21.3.5 定时录像设置 21.3.6 录像回放 21.3.7 注册程序 21.3.8 实时监控软件运行时间及磁盘空间 第22章 网络五子棋游戏 22.1 设计思路 22.2 关键技术 22.2.1 在下拉列表中绘制图片 22.2.2 UDP协议 22.2.3 用Socket实现信息传递的必备条件 22.2.4 自定义事件的设置 22.2.5 动态按钮的设置 22.3 设计过程 22.3.1 类库的设计 22.3.2 客户端注册模块设计 22.3.3 客户端登录模块设计 22.3.4 五子棋大厅的设计 22.3.5 对决窗体的设计 22.3.6 网络五子棋服务器窗体的设计 第23章 在线升级模块 23.1 设计思路 23.2 关键技术 23.2.1 FTP上传下载技术 23.2.2 XML文件操作 23.2.3 INI文件的读写 23.2.4 动态生成版本面板 23.2.5 使用Hashtable(哈希表)记录版本号及更新信息 23.3 类库设计过程 23.4 服务器端设计过程 23.4.1 服务器端主窗体预览 23.4.2 连接FTP服务器 23.4.3 向FTP服务器上传新版本 23.5 客户端设计过程 23.5.1 启动客户端时检测是否有新版本 23.5.2 从FTP服务器下载指定版本 23.5.3 定时升级设置 第24章 Windows应用程序打包与部署境 24.1 WindowsInstaller简介 24.2 Windows应用程序部署 24.2.1 创建部署项目 24.2.2 可选的部署功能 24.3 安装及卸载Windows程序 24.3.1 在本地计算机上安装 24.3.2 部署到其他计算机 24.3.3 卸载安装应用程序
11.68MB
开源OA系统 (懒人工作通oa )
2011-04-14系统简介: 懒人工作通 网络智能办公系统是适用于企事业单位的通用型网络办公软件,融合了云创科技长期从事管理软件开发的丰富经验与先进技术,该系统采用领先的B/S(浏览器/服务器)操作方式,使得网络办公不受地域限制。 懒人工作通 坚持走可持续发展的道路,始终以满足用户需求为己任,把丰富软件功能、提升软件质量作为第一要务,不跟风炒作,坚信酒好不怕巷子深,好产品最终会赢得市场认同。 懒人工作通 系统集成了包括内部电子邮件、资讯和公告通知、日程安排、工作汇报、工作流程、公文流转签发和签收、电子印章与电子签名、通讯录、论坛、投票、聊天室、云计算手写板、CRM、网络硬盘、短信息提醒、网址大全、历史今天、万年历、记事便笺等数十个极具价值的功能模块,面向集团应用,支持任意多级部门。操作简单、上手快、易用性强,一般懂得上网的用户几乎不用培训就可以开始使用。采用智能流程定制技术可以实现任意业务流程模型、表单、文件流转及审批,同时可以实现Word文档的痕迹保留、手写签名、电子印章和签名等功能。 懒人工作通 在功能上注重实用、易用、安全、稳定,在系统安装上更提供了采用独有技术开发的智能向导安装工具和完善丰富的安装、使用教程手册,用户可在短时间内自行安装完毕,无需专业人员即可自行安装和维护。在性能方面也表现优异,使用普通PC服务器即可实现百人级别的并发应用。 懒人工作通 采用基于WEB的企业计算,采用了世界上最先进的微软技术:C#语言、SqlServer数据库引擎和IIS服务器,性能稳定可靠。数据存取集中控制,避免了数据泄漏的可能。提供数据备份工具,保护系统数据安全。多级的权限控制,完善的密码验证与登录机制更加强了系统安全性。 采用B/S三层结构(完全基于WEB开发); 采用C#,遵循Mircrosoft .Net3.5标准; 本系统实用客户群体:信息化刚起步的企事业单位。
10.0MB
《C#高级编程第七版》中文(ProfessionalC#4.0and.NET4)[共十卷][VOL2]
2011-05-26该版本已添加目录标签 并修正了一些错误 中文名: C#高级编程 第七版 原名: Professional C# 4.0 and .NET 4 别名: C#高级编程(第7版) 作者: (美)Christian Nagel Bill Evjen Jay Glynn.译者: 无.资源格式: PDF 版本: 影印版 出版社: worx.书号: ISBN:9787302239376.发行时间: 2010年 地区: 大陆 语言: 中文 本书是Wrox畅销书,C#经典名著!2009年度全行业优秀畅销书。自第一版出版以来,都是国内读者的普遍好评,累计销量近十万册。 《C#高级编程(第7版)》的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写 Windows应用程序和ASP.NET Web应用程序。 本书几乎涵盖C#语言的所有功能,对于C#初学者和有经验的程序员是值得大力推荐的书籍。实践证明,本书是关于C# 和 Visual Studio的一本全面 而且权威的参考书。 新的C# 4对于在Visual Studio 2010中编写代码是必不可少的。这本实用指南强调,C#是编写.NET 4应用程序的首选语言。《C#高级编程(第7版)》 的顶级专家作者团队首先复习了C#的基础知识,之后详细讲解了该语言和架构中的所有新增功能,使读者能立即开始编写Windows应用程序和ASP.NET Web应用程序。 本书主要内容 ◆ 回顾.NET体系结构、对象、泛型、继承、数组、运算符、类型强制转换、委托、事件、Lambda表达式等 ◆ 详细论述C#中的动态对象、命名参数和可选参数、COM专用的交互操作功能、安全类型变体 ◆ 阐述.NET 4的新增功能、WF 4、ADO.NET 数据服务、MEF、并行任务库和PLINQ ◆ 深入探讨LINQ、WCF、WPF、流文档和固定文档及Silverlight等功能强大的技术 ◆ 回顾ASP.NET编程,介绍ASP.NET MVC和ASP.NET 动态数据等新功能 ◆ 讨论使用WCF、MSMQ、点对点和联合进行通信 目录: 第ⅰ部分 c# 语 言 第1章 .net体系结构 3 1.1 c#与.net的关系 3 1.2 公共语言运行库 4 1.2.1 平台无关性 4 1.2.2 提高性能 4 1.2.3 语言的互操作性 5 1.3 中间语言 6 1.3.1 面向对象和接口的支持 6 1.3.2 不同的值类型和引用类型 7 1.3.3 强数据类型化 8 1.3.4 通过异常处理错误 12 1.3.5 特性的使用 13 1.4 程序集 13 1.4.1 私有程序集 14 1.4.2 共享程序集 14 1.4.3 反射 14 1.4.4 并行编程 15 1.5 .net framework类 15 1.6 名称空间 16 .1.7 用c#创建.net应用程序 16 1.7.1 创建asp.net应用程序 16 1.7.2 创建windows窗体 18 1.7.3 使用wpf 18 1.7.4 windows控件 19 1.7.5 windows服务 19 1.7.6 wcf 19 1.7.7 windows wf 19 1.8 c#在.net企业体系结构 中的作用 19 1.9 小结 21 第2章 核心c# 23 2.1 第一个c#程序 23 2.1.1 代码 24 2.1.2 编译并运行程序 24 2.1.3 详细介绍 25 2.2 变量 26 2.2.1 变量的初始化 27 2.2.2 类型推断 28 2.2.3 变量的作用域 29 2.2.4 常量 31 2.3 预定义数据类型 32 2.3.1 值类型和引用类型 32 2.3.2 cts类型 33 2.3.3 预定义的值类型 33 2.3.4 预定义的引用类型 36 2.4 流控制 38 2.4.1 条件语句 38 2.4.2 循环 42 2.4.3 跳转语句 45 2.5 枚举 46 2.6 名称空间 47 2.6.1 using语句 49 2.6.2 名称空间的别名 49 2.7 main()方法 50 2.7.1 多个main()方法 50 2.7.2 给main()方法传递参数 52 2.8 有关编译c#文件的更多内容 52 2.9 控制台i/o 54 2.10 使用注释 56 2.10.1 源文件中的内部注释 56 2.10.2 xml文档 56 2.11 c#预处理器指令 58 2.11.1 #define和 #undef 59 2.11.2 #if, #elif, #else和#endif 59 2.11.3 #warning和 # error 60 2.11.4 #region和#endregion 61 2.11.5 #line 61 2.11.6 #pragma 61 2.12 c#编程规则 62 2.12.1 关于标识符的规则 62 2.12.2 用法约定 63 2.13 小结 68 第3章 对象和类型 69 3.1 类和结构 69 3.2 类 70 3.2.1 数据成员 70 3.2.2 函数成员 71 3.2.3 只读字段 83 3.3 匿名类型 84 3.4 结构 85 3.4.1 结构是值类型 86 3.4.2 结构和继承 87 3.4.3 结构的构造函数 87 3.5 部分类 87 3.6 静态类 89 3.7 object类 89 3.7.1 system.object()方法 90 3.7.2 tostring()方法 90 3.8 扩展方法 92 3.9 小结 93 第4章 继承 95 4.1 继承的类型 95 4.1.1 实现继承和接口继承 95 4.1.2 多重继承 95 4.1.3 结构和类 96 4.2 实现继承 96 4.2.1 虚方法 97 4.2.2 隐藏方法 98 4.2.3 调用函数的基类版本 99 4.2.4 抽象类和抽象函数 100 4.2.5 密封类和密封方法 100 4.2.6 派生类的构造函数 101 4.3 修饰符 106 4.3.1 可见性修饰符 106 4.3.2 其他修饰符 106 4.4 接口 107 4.4.1 定义和实现接口 108 4.4.2 派生的接口 111 4.5 小结 113 第5章 泛型 115 5.1 概述 115 5.1.1 性能 116 5.1.2 类型安全 117 5.1.3 二进制代码的重用 117 5.1.4 代码的扩展 117 5.1.5 命名约定 118 5.2 创建泛型类 118 5.3 泛型类的功能 122 5.3.1 默认值 123 5.3.2 约束 123 5.3.3 继承 126 5.3.4 静态成员 127 5.4 泛型接口 127 5.4.1 协变和抗变 128 5.4.2 泛型接口的协变 129 5.4.3 泛型接口的抗变 130 5.5 泛型结构 131 5.6 泛型方法 134 5.6.1 泛型方法示例 134 5.6.2 带约束的泛型方法 135 5.6.3 带委托的泛型方法 136 5.6.4 泛型方法规范 137 5.7 小结 138 第6章 数组 139 6.1 简单数组 139 6.1.1 数组的声明 139 6.1.2 数组的初始化 139 6.1.3 访问数组元素 140 6.1.4 使用引用类型 141 6.2 多维数组 142 6.3 锯齿数组 143 6.4 array类 144 6.4.1 创建数组 145 6.4.2 复制数组 146 6.4.3 排序 147 6.5 数组作为参数 150 6.5.1 数组协变 151 6.5.2 arraysegment[t] 151 6.6 枚举 152 6.6.1 ienumerator接口 152 6.6.2 foreach语句 153 6.6.3 yield语句 153 6.7 元组 158 6.8 结构比较 159 6.9 小结 162 第7章 运算符和类型强制转换 163 7.1 运算符 163 7.1.1 运算符的简化操作 165 7.1.2 运算符的优先级 169 7.2 类型的安全性 169 7.2.1 类型转换 170 7.2.2 装箱和拆箱 173 7.3 比较对象的相等性 174 7.3.1 比较引用类型的相等性 174 7.3.2 比较值类型的相等性 175 7.4 运算符重载 176 7.4.1 运算符的工作方式 177 7.4.2 运算符重载的示例: vector结构 178 7.5 用户定义的类型强制转换 185 7.5.1 实现用户定义的类型 强制转换 186 7.5.2 多重类型强制转换 192 7.6 小结 195 第8章 委托、lambda表达式 和事件 197 8.1 委托 197 8.1.1 声明委托 198 8.1.2 使用委托 199 8.1.3 简单的委托示例 202 8.1.4 action[t]和func[t] 委托 204 8.1.5 bubblesorter示例 204 8.1.6 多播委托 207 8.1.7 匿名方法 210 8.2 lambda表达式 211 8.2.1 参数 212 8.2.2 多行代码 212 8.2.3 lambda表达式外部的 变量 213 8.3 事件 214 8.3.1 事件发布程序 214 8.3.2 事件侦听器 216 8.3.3 弱事件 217 8.4 小结 220 第9章 字符串和正则表达式 221 9.1 system.string类 221 9.1.1 创建字符串 222 9.1.2 stringbuilder成员 225 9.1.3 格式字符串 226 9.2 正则表达式 231 9.2.1 正则表达式概述 232 9.2.2 regularexpressions playaround示例 233 9.2.3 显示结果 235 9.2.4 匹配、组合和捕获 237 9.3 小结 238 第10章 集合 239 10.1 集合接口和类型 239 10.2 列表 240 10.2.1 创建列表 241 10.2.2 只读集合 250 10.3 队列 250 10.4 栈 254 10.5 链表 256 10.6 有序列表 261 10.7 字典 262 10.7.1 键的类型 263 10.7.2 字典示例 264 10.7.3 lookup类 268 10.7.4 有序字典 269 10.8 集 269 10.9 可观察的集合 271 10.10 位数组 272 10.10.1 bitarray类 273 10.10.2 bitvector32结构 275 10.11 并发集合 277 10.12 性能 279 10.13 小结 281 第11章 linq 283 11.1 linq概述 283 11.1.1 列表和实体 283 11.1.2 linq查询 287 11.1.3 扩展方法 288 11.1.4 推迟查询的执行 289 11.2 标准的查询操作符 291 11.2.1 筛选 293 11.2.2 用索引筛选 293 11.2.3 类型筛选 294 11.2.4 复合的from子句 294 11.2.5 排序 295 11.2.6 分组 296 11.2.7 对嵌套的对象分组 297 11.2.8 连接 298 11.2.9 集合操作 300 11.2.10 合并 301 11.2.11 分区 302 11.2.12 聚合操作符 303 11.2.13 转换 304 11.2.14 生成操作符 305 11.3 并行linq 306 11.3.1 并行查询 306 11.3.2 分区器 307 11.3.3 取消 307 11.4 表达式树 308 11.5 linq提供程序 311 11.6 小结 311 第12章 动态语言扩展 313 12.1 dlr 313 12.2 dynamic类型 313 12.3 包含dlr scriptruntime 318 12.4 dynamicobject和 expandoobject 321 12.4.1 dynamicobject 321 12.4.2 expandoobject 323 12.5 小结 324 第13章 内存管理和指针 325 13.1 后台内存管理 325 13.1.1 值数据类型 325 13.1.2 引用数据类型 327 13.1.3 垃圾回收 328 13.2 释放非托管的资源 330 13.2.1 析构函数 330 13.2.2 idisposable接口 331 13.2.3 实现idisposable接口 和析构函数 332 13.3 不安全的代码 334 13.3.1 用指针直接访问内存 334 13.3.2 指针示例: pointerplayground 343 13.3.3 使用指针优化性能 347 13.4 小结 350 第14章 反射 351 14.1 自定义特性 351 14.1.1 编写自定义特性 352 14.1.2 自定义特性示例: whatsnewattributes 355 14.2 反射 358 14.2.1 system.type类 358 14.2.2 typeview示例 360 14.2.3 assembly类 362 14.2.4 完成whatsnew attributes示例 364 14.3 小结 368 第15章 错误和异常 369 15.1 异常类 369 15.2 捕获异常 371 15.2.1 实现多个catch块 373 15.2.2 在其他代码中捕获异常 376 15.2.3 system.exception属性 376 15.2.4 没有处理异常时所发生 的情况 377 15.2.5 嵌套的 try块 378 15.3 用户定义的异常类 379 15.3.1 捕获用户定义的异常 380 15.3.2 抛出用户定义的异常 382 15.3.3 定义用户定义的异常类 385 15.4 小结 387 第ⅱ部分 visual studio 第16章 visual studio 2010 391 16.1 使用visual studio 2010 391 16.1.1 创建项目 395 16.1.2 解决方案和项目的区别 401 16.1.3 windows应用程序代码 403 16.1.4 项目的浏览和编码 404 16.1.5 生成项目 411 16.1.6 调试代码 415 16.2 重构工具 418 16.3 面向多个版本的 .net framework 420 16.4 wpf、wcf、wf等 421 16.4.1 在visual studio 2010 中构建wpf应用程序 421 16.4.2 在visual studio 2010 中构建wf应用程序 423 16.5 小结 424 第17章 部署 425 17.1 部署的规划 425 17.1.1 部署选项 426 17.1.2 部署要求 426 17.1.3 部署.net运行库 427 17.2 简单的部署选项 427 17.2.1 xcopy部署 428 17.2.2 xcopy和web 应用程序 428 17.2.3 发布web站点 429 17.3 visual studio 2010安装 和部署项目 429 17.3.1 windows installer 430 17.3.2 创建安装程序 430 17.4 clickonce 437 17.4.1 clickonce操作 437 17.4.2 发布clickonce 应用程序 438 17.4.3 clickonce设置 438 17.4.4 clickonce文件的 应用程序缓存 439 17.4.5 应用程序的安全性 439 17.5 visual studio 2010 高级选项 440 17.5.1 文件系统编辑器 440 17.5.2 注册表编辑器 440 17.5.3 文件类型编辑器 440 17.5.4 用户界面编辑器 441 17.5.5 自定义动作编辑器 442 17.5.6 launch conditions 编辑器 443 17.6 小结 444 第ⅲ部分 基 础 第18章 程序集 447 18.1 程序集的含义 447 18.1.1 程序集的功能 448 18.1.2 程序集的结构 448 18.1.3 程序集清单 449 18.1.4 名称空间、程序集 和组件 449 18.1.5 私有程序集和共享 程序集 449 18.1.6 附属程序集 450 18.1.7 查看程序集 450 18.2 创建程序集 451 18.2.1 创建模块和程序集 451 18.2.2 程序集的特性 452 18.2.3 动态加载和创建 程序集 454 18.3 应用程序域 457 18.4 共享程序集 461 18.4.1 强名 462 18.4.2 使用强名获得完整性 462 18.4.3 全局程序集缓存 463 18.4.4 创建共享程序集 463 18.4.5 创建强名 464 18.4.6 安装共享程序集 465 18.4.7 使用共享程序集 465 18.4.8 程序集的延迟签名 466 18.4.9 引用 467 18.4.10 本机映像生成器 468 18.5 配置.net应用程序 469 18.5.1 配置类别 469 18.5.2 绑定程序集 470 18.6 版本问题 471 18.6.1 版本号 472 18.6.2 通过编程方式获取版本 472 18.6.3 绑定到程序集版本 473 18.6.4 发行者策略文件 474 18.6.5 运行库的版本 475 18.7 小结 476 第19章 检测 477 19.1 代码协定 477 19.1.1 前提条件 479 19.1.2 后置条件 480 19.1.3 常量 481 19.1.4 接口的协定 481 19.2 跟踪 483 19.2.1 跟踪源 484 19.2.2 跟踪开关 485 19.2.3 跟踪侦听器 486 19.2.4 筛选器 488 19.2.5 相关性 489 19.3 事件日志 492 19.3.1 事件日志体系结构 493 19.3.2 事件日志类 494 19.3.3 创建事件源 494 19.3.4 写入事件日志 495 19.3.5 资源文件 496 19.4 性能监控 500 19.4.1 性能监控类 500 19.4.2 性能计数器生成器 500 19.4.3 添加performance counter组件 503 19.4.4 perfmon.exe 505 19.5 小结 506 第20章 线程、任务和同步 507 20.1 概述 507 20.2 异步委托 508 20.2.1 投票 508 20.2.2 等待句柄 509 20.2.3 异步回调 510 20.3 thread类 512 20.3.1 给线程传递数据 513 20.3.2 后台线程 514 20.3.3 线程的优先级 515 20.3.4 控制线程 515 20.4 线程池 516 20.5 任务 517 20.5.1 启动任务 517 20.5.2 连续的任务 518 20.5.3 任务层次结构 519 20.5.4 任务的结果 520 20.6 parallel类 521 20.6.1 用parallel.for() 方法循环 521 20.6.2 使用parallel.foreach() 方法循环 523 20.6.3 通过parallel.invoke() 方法调用多个方法 524 20.7 取消架构 524 20.7.1 parallel.for()方法 的取消 524 20.7.2 任务的取消 526 20.8 线程问题 527 20.8.1 争用条件 527 20.8.2 死锁 530 20.9 同步 532 20.9.1 lock语句和线程安全 532 20.9.2 interlocked类 538 20.9.3 monitor类 539 20.9.4 spinlock结构 540 20.9.5 waithandle基类 540 20.9.6 mutex类 541 20.9.7 semaphore类 542 20.9.8 events类 544 20.9.9 barrier类 547 20.9.10 readerwriterlockslim 类 549 20.10 timer类 552 20.11 基于事件的异步模式 554 20.11.1 backgroundworker 类 554 20.11.2 启用取消功能 557 20.11.3 启用进度功能 558 20.11.4 创建基于事件的异步 组件 559 20.12 小结 563 第21章 安全性 565 21.1 身份验证和授权 565 21.1.1 标识和principal 565 21.1.2 角色 567 21.1.3 声明基于角色的安全性 567 21.1.4 客户端应用程序服务 568 21.2 加密 573 21.2.1 签名 575 21.2.2 交换密钥和安全传输 576 21.3 资源的访问控制 579 21.4 代码访问安全性 582 21.4.1 第2级安全透明性 582 21.4.2 权限 583 21.5 使用证书发布代码 588 21.6 小结 588 第22章 本地化 591 22.1 system.globalization 名称空间 591 22.1.1 unicode问题 592 22.1.2 区域性和区域 592 22.1.3 使用区域性 596 22.1.4 排序 600 22.2 资源 602 22.2.1 创建资源文件 602 22.2.2 资源文件生成器 602 22.2.3 resourcewriter 603 22.2.4 使用资源文件 604 22.2.5 system.resources 名称空间 607 22.3 使用visual studio的 windows窗体本地化 607 22.3.1 通过编程方式修改 区域性 612 22.3.2 使用自定义资源文件 613 22.3.3 资源的自动回退 614 22.3.4 外包翻译 615 22.4 用asp.net本地化 615 22.5 用wpf本地化 617 22.5.1 用于wpf的.net资源 618 22.5.2 xaml资源字典 619 22.6 自定义资源读取器 622 22.6.1 创建databaseresource reader类 623 22.6.2 创建databaseresource set类 625 22.6.3 创建databaseresource manager类 625 22.6.4 databaseresourcereader 的客户端应用程序 626 22.7 创建自定义区域性 626 22.8 小结 628 第23章 system.transactions 629 23.1 概述 629 23.1.1 事务处理阶段 630 23.1.2 acid属性 630 23.2 数据库和实体类 631 23.3 传统的事务 633 23.3.1 ado.net事务 633 23.3.2 system.enterprise services 634 23.4 system.transactions 635 23.4.1 可提交的事务 636 23.4.2 事务处理的升级 638 23.4.3 依赖事务 640 23.4.4 环境事务 642 23.5 隔离级别 649 23.6 自定义资源管理器 650 23.7 windows 7和windows server 2008的事务 656 23.8 小结 660 第24章 网络 661 24.1 webclient类 661 24.1.1 下载文件 662 24.1.2 基本的webclient示例 662 24.1.3 上传文件 663 24.2 webrequest类和 webresponse类 664 24.2.1 身份验证 666 24.2.2 使用代理 666 24.2.3 异步页面请求 666 24.3 把输出结果显示为 html页面 667 24.3.1 从应用程序中进行 简单的web浏览 667 24.3.2 启动internet explorer 实例 669 24.3.3 给应用程序提供更多 的ie类型特性 669 24.3.4 使用webbrowser控件 打印 674 24.3.5 显示请求页面的代码 674 24.3.6 webrequest类 和webresponse类的 层次结构 676 24.4 实用工具类 676 24.4.1 uri 676 24.4.2 ip地址和dns名称 677 24.5 较低层的协议 679 24.5.1 使用smtpclient 680 24.5.2 使用tcp类 682 24.5.3 tcpsend和tcpreceive 示例 682 24.5.4 tcp和udp 684 24.5.5 udp类 684 24.5.6 socket类 685 24.6 小结 689 第25章 windows服务 691 25.1 windows服务 691 25.2 windows服务的体系结构 692 25.2.1 服务程序 692 25.2.2 服务控制程序 694 25.2.3 服务配置程序 694 25.2.4 windows服务的类 694 25.3 创建windows服务程序 694 25.3.1 创建服务的核心功能 695 25.3.2 quoteclient示例 698 25.3.3 windows服务程序 699 25.3.4 线程和服务 703 25.3.5 服务的安装 704 25.3.6 安装程序 704 25.4 服务的监视和控制 708 25.4.1 mmc管理单元 708 25.4.2 net.exe实用程序 709 25.4.3 sc.exe实用程序 710 25.4.4 visual studio server explorer 710 25.4.5 编写自定义 servicecontroller类 710 25.5 故障排除和事件日志 718 25.6 小结 719 第26章 互操作性 721 26.1 .net和com 721 26.1.1 元数据 722 26.1.2 释放内存 722 26.1.3 接口 722 26.1.4 方法的绑定 724 26.1.5 数据类型 724 26.1.6 注册 724 26.1.7 线程 725 26.1.8 错误处理 726 26.1.9 事件 727 26.2 编组 727 26.3 从.net客户端中使用 com组件 728 26.3.1 创建com组件 728 26.3.2 创建rcw 734 26.3.3 使用rcw 735 26.3.4 使用com服务器和 动态语言扩展 736 26.3.5 线程问题 737 26.3.6 添加连接点 737 26.4 从com客户端中使用 .net组件 739 26.4.1 ccm 740 26.4.2 创建.net组件 740 26.4.3 创建类型库 741 26.4.4 com互操作特性 743 26.4.5 com注册 745 26.4.6 创建com客户端 应用程序 746 26.4.7 添加连接点 747 26.4.8 用sink对象创建 客户端 748 26.5 平台调用 750 26.6 小结 754 第27章 核心xaml 755 27.1 概述 755 27.1.1 元素映射到.net 对象上 756 27.1.2 使用自定义.net类 757 27.1.3 把特性用作属性 759 27.1.4 把特性用作元素 759 27.1.5 基本的.net类型 760 27.1.6 集合 760 27.1.7 构造函数 761 27.2 依赖属性 761 27.2.1 创建依赖类型 762 27.2.2 强制值回调 763 27.2.3 值变更回调和事件 764 27.2.4 事件的冒泡和隧道 764 27.3 附加属性 767 27.4 标记扩展 770 27.5 创建自定义标记扩展 770 27.6 xaml定义的标记扩展 772 27.7 读写xaml 772 27.8 小结 773 第28章 managed extensibility framework 775 28.1 mef的体系结构 775 28.2 协定 782 28.3 导出 783 28.3.1 导出属性和方法 787 28.3.2 导出元数据 789 28.4 导入 791 28.5 容器和出口提供程序 794 28.6 类别 797 28.7 小结 798 第29章 文件和注册表操作 799 29.1 管理文件系统 799 29.1.1 表示文件和文件夹 的.net类 800 29.1.2 path类 803 29.1.3 fileproperties示例 803 29.2 移动、复制和删除文件 808 29.2.1 filepropertiesandmovement 示例 808 29.2.2 filepropertiesandmovement 示例的代码 809 29.3 读写文件 812 29.3.1 读取文件 812 29.3.2 写入文件 814 29.3.3 流 815 29.3.4 缓存的流 816 29.3.5 使用filestream类读写 二进制文件 816 29.3.6 读写文本文件 821 29.4 映射内存的文件 827 29.5 读取驱动器信息 829 29.6 文件的安全性 831 29.6.1 从文件中读取acl 831 29.6.2 从目录中读取acl 832 29.6.3 添加和删除文件中 的acl项 833 29.7 读写注册表 835 29.7.1 注册表 835 29.7.2 .net注册表类 837 29.8 读写独立存储器 839 29.9 小结 844 第ⅳ部分 数 据 第30章 核心ado.net 847 30.1 ado.net概述 847 30.1.1 名称空间 848 30.1.2 共享类 848 30.1.3 数据库专用的类 849 30.2 使用数据库连接 850 30.2.1 管理连接字符串 851 30.2.2 高效地使用连接 852 30.2.3 事务 854 30.3 命令 855 30.3.1 执行命令 856 30.3.2 调用存储过程 860 30.4 快速数据访问: 数据读取器 862 30.5 管理数据和关系: dataset类 865 30.5.1 数据表 866 30.5.2 数据列 866 30.5.3 数据关系 871 30.5.4 数据约束 872 30.6 xml架构:用xsd 生成代码 875 30.7 填充dataset类 881 30.7.1 用数据适配器填充 dataset 882 30.7.2 从xml中填充 dataset类 883 30.8 持久化dataset类的修改 883 30.8.1 通过数据适配器进行 更新 883 30.8.2 写入xml输出结果 886 30.9 使用ado.net 887 30.9.1 分层开发 887 30.9.2 生成sql server的键 888 30.9.3 命名约定 891 30.10 小结 892 第31章 ado.net entity framework 893 31.1 ado.net entity framework概述 893 31.2 entity framework映射 894 31.2.1 逻辑层 895 31.2.2 概念层 897 31.2.3 映射层 898 31.3 entity client 899 31.3.1 连接字符串 900 31.3.2 entity sql 900 31.4 实体 901 31.5 对象上下文 904 31.6 关系 906 31.6.1 一个层次结构一个表 907 31.6.2 一种类型一个表 908 31.6.3 懒惰加载、延迟加载 和预先加载 909 31.7 对象查询 910 31.8 更新 913 31.8.1 对象跟踪 913 31.8.2 改变信息 914 31.8.3 附加和分离实体 916 31.8.4 存储实体的变化 916 31.9 linq to entities 917 31.10 小结 918 第32章 数据服务 919 32.1 概述 919 32.2 包含clr对象的自定义 宿主 920 32.2.1 clr对象 920 32.2.2 数据模型 922 32.2.3 数据服务 923 32.2.4 驻留服务 923 32.2.5 其他服务操作 924 32.3 http客户端应用程序 925 32.4 使用wcf数据服务和 ado.net entity framework 929 32.4.1 asp.net宿主和edm 929 32.4.2 使用system.data .service.client的.net 应用程序 931 32.5 小结 938 第33章 处理xml 939 33.1 .net支持的xml标准 940 33.2 system.xml名称空间 940 33.3 使用system.xml类 941 33.4 读写流格式的xml 942 33.4.1 使用 xmlreader类 942 33.4.2 使用xmlreader类进行 验证 946 33.4.3 使用xmlwriter类 947 33.5 在.net中使用dom 949 33.6 使用xpathnavigator类 954 33.6.1 system.xml.xpath 名称空间 954 33.6.2 system.xml.xsl 名称空间 959 33.6.3 调试xslt 963 33.7 xml和ado.net 965 33.7.1 将ado.net数据 转换为xml文档 965 33.7.2 把xml文档转换为 ado.net数据 970 33.8 在xml中序列化对象 972 33.9 linq to xml和.net 982 33.10 使用不同的xml对象 982 33.10.1 xdocument对象 982 33.10.2 xelement对象 983 33.10.3 xnamespace对象 984 33.10.4 xcomment对象 986 33.10.5 xattribute对象 986 33.11 使用linq查询xml 文档 987 33.11.1 查询静态的xml 文档 987 33.11.2 查询动态的xml 文档 989 33.12 xml文档的更多查询 技术 990 33.12.1 读取xml文档 990 33.12.2 写入xml文档 992 33.13 小结 993 第34章 .net编程和sql server 995 34.1 .net运行库的宿主 995 34.2 microsoft.sqlserver.server 997 34.3 用户定义的类型 998 34.3.1 创建udt 998 34.3.2 通过sql使用udt 1003 34.3.3 从客户端代码中使用 udt 1004 34.4 用户定义的聚合函数 1005 34.4.1 创建用户定义的 聚合函数 1006 34.4.2 使用用户定义的 聚合函数 1007 34.5 存储过程 1007 34.5.1 创建存储过程 1008 34.5.2 使用存储过程 1009 34.6 用户定义的函数 1010 34.6.1 创建用户定义的函数 1010 34.6.2 使用用户定义的函数 1010 34.7 触发器 1011 34.7.1 创建触发器 1011 34.7.2 使用触发器 1012 34.8 xml数据类型 1013 34.8.1 包含xml数据的表 1013 34.8.2 读取xml值 1014 34.8.3 数据的查询 1017 34.8.4 xml数据修改语言 (xml dml) 1019 34.8.5 xml索引 1020 34.8.6 强类型化的xml 1021 34.9 小结 1022 第ⅴ部分 显 示 第35章 核心wpf 1025 35.1 概述 1025 35.1.1 名称空间 1025 35.1.2 类层次结构 1027 35.2 形状 1028 35.3 几何图形 1030 35.4 变换 1032 35.5 画笔 1033 35.5.1 solidcolorbrush 1033 35.5.2 lineargradientbrush 1034 35.5.3 radialgradientbrush 1034 35.5.4 drawingbrush 1035 35.5.5 imagebrush 1035 35.5.6 visualbrush 1036 35.6 控件 1037 35.6.1 简单控件 1037 35.6.2 内容控件 1038 35.6.3 带标题的内容控件 1039 35.6.4 项控件 1040 35.6.5 带标题的项控件 1041 35.6.6 修饰 1041 35.7 布局 1042 35.7.1 stackpanel 1042 35.7.2 wrappanel 1043 35.7.3 canvas 1044 35.7.4 dockpanel 1044 35.7.5 grid 1045 35.8 样式和资源 1046 35.8.1 样式 1046 35.8.2 资源 1048 35.8.3 系统资源 1049 35.8.4 从代码中访问资源 1050 35.8.5 动态资源 1050 35.8.6 资源字典 1051 35.9 触发器 1052 35.9.1 属性触发器 1053 35.9.2 多触发器 1054 35.9.3 数据触发器 1055 35.10 模板 1056 35.10.1 控件模板 1057 35.10.2 数据模板 1060 35.10.3 样式化列表框 1061 35.10.4 itemtemplate 1062 35.10.5 列表框元素的控件 模板 1064 35.11 动画 1066 35.11.1 时间轴 1066 35.11.2 非线性动画 1069 35.11.3 事件触发器 1069 35.11.4 关键帧动画 1072 35.12 可见状态管理器 1073 35.13 3-d 1076 35.13.1 模型 1077 35.13.2 照相机 1079 35.13.3 光线 1079 35.13.4 旋转 1079 35.14 小结 1080 第36章 用wpf编写业务 应用程序 1083 36.1 数据绑定 1083 36.1.1 booksdemo应用程序 1084 36.1.2 用xaml绑定 1086 36.1.3 简单对象的绑定 1088 36.1.4 更改通知 1090 36.1.5 对象数据提供程序 1092 36.1.6 列表绑定 1094 36.1.7 主从绑定 1096 36.1.8 多绑定 1097 36.1.9 优先绑定 1099 36.1.10 值的转换 1100 36.1.11 动态添加列表项 1102 36.1.12 数据模板选择器 1103 36.1.13 绑定到xml上 1105 36.1.14 绑定的验证 1107 36.2 commanding 1111 36.2.1 定义命令 1112 36.2.2 定义命令源 1113 36.2.3 命令绑定 1113 36.3 treeview 1114 36.4 datagrid 1118 36.4.1 自定义列 1120 36.4.2 行的细节 1121 36.4.3 用datagrid进行分组 1121 36.5 小结 1124 第37章 用wpf创建文档 1125 37.1 文本元素 1125 37.1.1 字体 1125 37.1.2 texteffect 1127 37.1.3 内联 1128 37.1.4 块 1130 37.1.5 列表 1132 37.1.6 表 1132 37.1.7 块的锚定 1134 37.2 流文档 1135 37.3 固定文档 1136 37.4 xps文档 1140 37.5 打印 1141 37.5.1 用printdialog打印 1142 37.5.2 打印可见元素 1142 37.6 小结 1144 第38章 silverlight 1145 38.1 wpf和silverlight的比较 1145 38.2 创建silverlight项目 1146 38.3 导航 1148 38.4 网络 1152 38.4.1 创建ado.net entity data model 1153 38.4.2 为silverlight客户端 创建wcf服务 1153 38.4.3 调用wcf服务 1155 38.4.4 使用wcf数据服务 1158 38.4.5 使用system.net访问 服务 1160 38.5 浏览器集成 1162 38.5.1 调用javascript 1162 38.5.2 javascript调用 silverlight 1163 38.6 在浏览器外运行的 silverlight应用程序 1164 38.7 小结 1167 第39章 windows窗体 1169 39.1 创建windows窗体 应用程序 1169 39.2 control类 1175 39.2.1 大小和位置 1175 39.2.2 外观 1176 39.2.3 用户交互操作 1176 39.2.4 windows功能 1177 39.2.5 其他功能 1177 39.3 标准控件和组件 1178 39.3.1 button控件 1178 39.3.2 checkbox控件 1178 39.3.3 radiobutton控件 1179 39.3.4 combobox控件、 listbox控件和 checkedlistbox控件 1179 39.3.5 datagridview控件 1180 39.3.6 datetimepicker控件 1188 39.3.7 errorprovider组件 1188 39.3.8 imagelist组件 1189 39.3.9 label控件 1189 39.3.10 listview控件 1189 39.3.11 picturebox控件 1189 39.3.12 progressbar控件 1190 39.3.13 textbox控件、 richtextbox控件与 maskedtextbox控件 1190 39.3.14 panel控件 1191 39.3.15 flowlayoutpanel和 tablelayoutpanel 控件 1191 39.3.16 splitcontainer控件 1192 39.3.17 tabcontrol控件和 tabpages控件 1192 39.3.18 toolstrip控件 1193 39.3.19 menustrip控件 1194 39.3.20 contextmenustrip 控件 1194 39.3.21 toolstripmenuitem 控件 1194 39.3.22 toolstripmanager类 1194 39.3.23 toolstripcontainer 控件 1195 39.4 窗体 1195 39.4.1 form类 1195 39.4.2 多文档界面 1199 39.4.3 创建自己的用户控件 1200 39.5 小结 1200 第40章 核心asp.net 1201 40.1 asp.net概述 1201 40.1.1 asp.net文件的 处理方式 1202 40.1.2 web站点和web 应用程序 1202 40.1.3 asp.net中的状态 管理 1203 40.2 asp.net web窗体 1203 40.2.1 asp.net代码模型 1207 40.2.2 asp.net服务器控件 1208 40.3 ado.net和数据绑定 1222 40.3.1 更新事件登记 应用程序 1222 40.3.2 数据绑定的更多内容 1229 40.4 应用程序配置 1234 40.5 小结 1236 第41章 asp.net的功能 1237 41.1 用户控件和自定义控件 1238 41.1.1 用户控件 1238 41.1.2 pcsdemosite中的 用户控件 1242 41.1.3 自定义控件 1243 41.2 母版页 1247 41.2.1 在web页面中 访问母版页 1248 41.2.2 嵌套的母版页 1248 41.2.3 pcsdemosite中 的母版页 1249 41.3 站点导航 1250 41.3.1 添加站点地图文件 1251 41.3.2 pcsdemosite中 的导航 1252 41.4 安全性 1253 41.4.1 使用security setup 添加forms身份验证 功能 1254 41.4.2 实现登录系统 1255 41.4.3 web 登录服务器控件 1255 41.4.4 保护目录 1256 41.4.5 pcsdemosite中的 安全性 1257 41.5 主题 1259 41.5.1 把主题应用于页面 1259 41.5.2 定义主题 1260 41.5.3 pcsdemosite中的 主题 1260 41.6 web部件 1263 41.6.1 web部件应用程序 组件 1263 41.6.2 web部件示例 1264 41.7 asp.net ajax 1270 41.8 ajax的概念 1271 41.9 asp.net ajax 1273 41.9.1 核心功能 1273 41.9.2 asp.net ajax control toolkit 1275 41.10 asp.net ajax网站 示例 1276 41.11 支持asp.net ajax的 网站配置 1278 41.12 添加asp.net ajax 功能 1279 41.12.1 scriptmanager控件 1280 41.12.2 使用updatepanel 控件 1281 41.12.3 使用updateprogress 1283 41.12.4 使用扩展控件 1284 41.13 使用ajax库 1286 41.13.1 给web页面添加 javascript 1286 41.13.2 全局实用程序函数 1287 41.13.3 使用ajax库 javascript oop 扩展 1287 41.13.4 pagerequestmanager 对象和application 对象 1289 41.13.5 javascript的调试 1292 41.13.6 异步调用web方法 1293 41.13.7 asp.net应用程序 服务 1294 41.14 小结 1294 第42章 asp.net动态数据 和mvc 1297 42.1 路由 1298 42.1.1 查询字符串参数 1298 42.1.2 定义路由 1300 42.1.3 使用路由参数 1303 42.2 动态数据 1305 42.2.1 创建动态数据网站 1305 42.2.2 定制动态数据网站 1310 42.2.3 进一步开发 1314 42.3 mvc 1314 42.3.1 mvc的含义 1314 42.3.2 asp.net mvc的 含义 1315 42.3.3 简单的asp.net mvc 应用程序 1315 42.3.4 定制asp.net mvc 应用程序 1321 42.3.5 进一步开发 1329 42.4 小结 1330 第ⅵ部分 通 信 第43章 wcf 1333 43.1 wcf概述 1333 43.1.1 soap 1335 43.1.2 wsdl 1335 43.1.3 rest 1335 43.1.4 json 1336 43.2 简单的服务和客户端 1336 43.2.1 服务协定 1337 43.2.2 服务的实现 1338 43.2.3 wcf服务宿主和 wcf测试客户端 1338 43.2.4 自定义服务宿主 1340 43.2.5 wcf客户端 1342 43.2.6 诊断 1343 43.3 协定 1345 43.3.1 数据协定 1345 43.3.2 版本问题 1346 43.3.3 服务协定 1346 43.3.4 消息协定 1347 43.4 服务的实现 1348 43.4.1 以编程方式创建 客户端 1351 43.4.2 错误处理 1352 43.5 绑定 1353 43.6 宿主 1356 43.6.1 自定义宿主 1356 43.6.2 was宿主 1357 43.6.3 预配置的宿主类 1357 43.7 客户端 1358 43.8 双工通信 1360 43.9 小结 1362 第44章 windows wf 4 1363 44.1 hello world示例 1363 44.2 活动 1365 44.2.1 if活动 1366 44.2.2 invokemethod活动 1367 44.2.3 parallel活动 1367 44.2.4 delay活动 1368 44.2.5 pick活动 1368 44.3 自定义活动 1369 44.3.1 活动的验证 1370 44.3.2 设计器 1371 44.3.3 自定义复合活动 1373 44.4 工作流 1375 44.4.1 实参和变量 1376 44.4.2 workflowapplication 1377 44.4.3 workflowservicehost 1381 44.4.4 驻留设计器 1386 44.5 小结 1391 第45章 对等网络 1393 45.1 p2p网络概述 1393 45.1.1 客户端-服务器体系 结构 1393 45.1.2 p2p体系结构 1394 45.1.3 p2p体系结构的挑战 1395 45.1.4 p2p术语 1396 45.1.5 p2p解决方案 1396 45.2 microsoft windows peer-to-peer networking 1396 45.2.1 pnrp 1396 45.2.2 people near me 1399 45.3 构建p2p应用程序 1400 45.3.1 system.net.peertopeer 1400 45.3.2 system.net.peertopeer .collaboration 1405 45.4 小结 1408 第46章 消息队列 1409 46.1 概述 1409 46.1.1 使用消息队列的场合 1410 46.1.2 消息队列功能 1411 46.2 message queuing产品 1412 46.3 消息队列体系结构 1412 46.3.1 消息 1413 46.3.2 消息队列 1413 46.4 message queuing 管理工具 1414 46.4.1 创建消息队列 1414 46.4.2 消息队列属性 1415 46.5 消息队列的编程实现 1415 46.5.1 创建消息队列 1415 46.5.2 查找队列 1416 46.5.3 打开已知队列 1417 46.5.4 发送消息 1418 46.5.5 接收消息 1421 46.6 课程订单应用程序 1423 46.6.1 课程订单类库 1423 46.6.2 课程订单消息 发送程序 1424 46.6.3 发送优先级和可恢复 的消息 1425 46.6.4 课程订单消息接收 程序 1426 46.7 接收结果 1429 46.7.1 确认队列 1430 46.7.2 响应队列 1430 46.8 事务队列 1431 46.9 消息队列和wcf 1432 46.9.1 带数据协定的实体类 1432 46.9.2 wcf服务协定 1433 46.9.3 wcf消息接收 应用程序 1434 46.9.4 wcf消息发送 应用程序 1437 46.10 消息队列的安装 1438 46.11 小结 1438 第47章 syndication 1441 47.1 system.servicemodel. syndication名称空间 概述 1441 47.2 读取联合源的示例 1442 47.3 联合源的示例 1444 47.4 小结 1449 第ⅶ部分 附 录 附录a 1453 ***以下内容见随书附赠光盘*** 第48章 使用gdi+绘图 e1 48.1 理解绘图规则 e1 48.1.1 gdi和gdi+ e2 48.1.2 绘制图形 e3 48.1.3 使用onpaint()方法 绘制图形 e6 48.1.4 使用剪切区域 e7 48.2 测量坐标和区域 e9 48.2.1 point和pointf结构 e9 48.2.2 size和sizef结构 e10 48.2.3 rectangle和rectanglef 结构 e11 48.2.4 region e12 48.3 调试须知 e13 48.4 绘制可滚动的窗口 e14 48.5 世界、页面和设备坐标 e18 48.6 颜色 e19 48.6.1 rgb值 e19 48.6.2 命名颜色 e20 48.6.3 图形显示模式和安全 的调色板 e20 48.6.4 安全调色板 e21 48.7 画笔和钢笔 e21 48.7.1 画笔 e22 48.7.2 钢笔 e23 48.8 绘制图形和线条 e23 48.9 显示图像 e25 48.10 处理图像时的问题 e27 48.11 绘制文本 e28 48.12 简单的文本示例 e29 48.13 字体和字体系列 e30 48.14 示例:枚举字体系列 e31 48.15 编辑文本文档: capseditor示例 e33 48.15.1 invalidate()方法 e37 48.15.2 计算项的大小和文档 的大小 e38 48.15.3 onpaint()方法 e39 48.15.4 坐标转换 e41 48.15.5 响应用户的输入 e42 48.16 打印 e45 48.17 小结 e50 第49章 vsto e51 49.1 vsto概述 e51 49.1.1 项目类型 e52 49.1.2 项目功能 e54 49.2 vsto项目基础 e55 49.2.1 office对象模型 e55 49.2.2 vsto名称空间 e55 49.2.3 宿主项和宿主控件 e56 49.2.4 基本的vsto项目 结构 e57 49.2.5 globals类 e60 49.2.6 事件处理 e60 49.3 构建vsto解决方案 e61 49.3.1 管理应用程序级插件 e62 49.3.2 与应用程序和文档 交互操作 e63 49.3.3 ui的自定义 e64 49.4 示例应用程序 e68 49.5 小结 e78 第50章 maf e79 50.1 maf体系结构 e79 50.1.1 管道 e80 50.1.2 发现 e81 50.1.3 激活和隔离 e82 50.1.4 协定 e83 50.1.5 生命周期 e84 50.1.6 版本问题 e85 50.2 插件示例 e86 50.2.1 插件协定 e86 50.2.2 计算器插件视图 e87 50.2.3 计算器插件适配器 e88 50.2.4 计算器插件 e90 50.2.5 计算器宿主视图 e91 50.2.6 计算机宿主适配器 e91 50.2.7 计算器宿主 e93 50.2.8 其他插件 e97 50.3 小结 e97 第51章 enterprise services e99 51.1 使用enterprise services e99 51.1.1 简史 e100 51.1.2 使用enterprise services 的场合 e100 51.1.3 重要功能 e101 51.2 创建简单的com+应用 程序 e103 51.2.1 servicedcomponent类 e103 51.2.2 程序集的属性 e103 51.2.3 创建组件 e104 51.3 部署 e106 51.3.1 自动部署 e106 51.3.2 手工部署 e106 51.3.3 创建安装软件包 e106 51.4 组件服务管理器 e107 51.5 客户端应用程序 e108 51.6 事务 e109 51.6.1 事务的特性 e109 51.6.2 事务的结果 e110 51.7 示例应用程序 e111 51.7.1 实体类 e111 51.7.2 ordercontrol组件 e113 51.7.3 orderdata组件 e114 51.7.4 orderlinedata组件 e116 51.7.5 客户端应用程序 e117 51.8 集成wcf和enterprise services e118 51.8.1 wcf服务外观 e118 51.8.2 客户端应用程序 e122 51.9 小结 e123 第52章 目录服务 e125 52.1 active directory的 体系结构 e126 52.1.1 active directory的 功能 e126 52.1.2 active directory的 概念 e126 52.1.3 active directory数据 的特征 e129 52.1.4 指定架构 e130 52.2 active directory的 管理工具 e131 52.2.1 active directory users and computers工具 e131 52.2.2 adsi edit工具 e132 52.3 active directory编程 e133 52.3.1 system.directoryservices 名称空间中的类 e134 52.3.2 绑定到directory services e134 52.3.3 获取目录项 e138 52.3.4 对象集合 e140 52.3.5 缓存 e141 52.3.6 创建新对象 e141 52.3.7 更新目录项 e142 52.3.8 访问本地adsi对象 e143 52.3.9 在active directory 中搜索 e144 52.4 搜索用户对象 e148 52.4.1 用户界面 e148 52.4.2 获取架构命名上下文 e149 52.4.3 获取user类的属性名 e149 52.4.4 搜索用户对象 e150 52.5 账户管理 e152 52.5.1 显示用户信息 e152 52.5.2 创建用户 e153 52.5.3 重置密码 e153 52.5.4 创建组 e154 52.5.5 在组中添加用户 e154 52.5.6 查找用户 e154 52.6 dsml e155 52.6.1 system.directoryservices. protocols名称空间中 的类 e156 52.6.2 用dsml搜索 active directory对象 e156 52.7 小结 e157 第53章 c#、visual basic、 c++/cli和f# e159 53.1 名称空间 e160 53.2 定义类型 e161 53.2.1 引用类型 e161 53.2.2 值类型 e162 53.2.3 类型推断 e163 53.2.4 接口 e164 53.2.5 枚举 e165 53.3 方法 e166 53.3.1 方法的参数和返回 类型 e166 53.3.2 参数修饰符 e167 53.3.3 构造函数 e168 53.3.4 属性 e170 53.3.5 对象初始值设定项 e171 53.3.6 扩展方法 e171 53.4 静态成员 e172 53.5 数组 e173 53.6 控制语句 e174 53.6.1 if语句 e174 53.6.2 条件操作符 e174 53.6.3 switch语句 e175 53.7 循环 e176 53.7.1 for语句 e176 53.7.2 while和do…while 语句 e177 53.7.3 foreach语句 e178 53.8 异常处理 e178 53.9 继承 e180 53.9.1 访问修饰符 e180 53.9.2 关键字 e181 53.10 资源管理 e183 53.10.1 idisposable接口的 实现 e183 53.10.2 using语句 e184 53.10.3 重写finalize()方法 e184 53.11 委托 e186 53.12 事件 e188 53.13 泛型 e190 53.14 linq查询 e192 53.15 c++/cli混合本地代码 和托管代码 e192 53.16 c#的特殊功能 e193 53.17 小结 e194 第54章 .net remoting e195 54.1 使用.net remoting的 原因 e195 54.2 .net remoting术语详解 e197 54.2.1 客户端通信 e198 54.2.2 服务器端通信 e199 54.3 上下文 e199 54.3.1 激活 e200 54.3.2 特性和属性 e200 54.3.3 上下文之间的通信 e201 54.4 远程对象、客户端和 服务器 e201 54.4.1 远程对象 e201 54.4.2 简单的服务器应用 程序 e202 54.4.3 简单的客户端应用 程序 e203 54.5 .net remoting体系结构 e204 54.5.1 信道 e204 54.5.2 格式化程序 e207 54.5.3 channelservices和 remotingconfiguration e207 54.5.4 对象的激活 e209 54.5.5 消息接收器 e212 54.5.6 在远程方法中传递对象 e213 54.5.7 生命周期管理 e216 54.6 配置文件 e218 54.6.1 知名对象的服务器 配置 e220 54.6.2 知名对象的客户端 配置 e220 54.6.3 客户端激活的对象的 服务器配置 e221 54.6.4 客户端激活的对象的 客户端配置 e222 54.6.5 使用配置文件的 服务器代码 e222 54.6.6 使用配置文件的 客户端代码 e223 54.6.7 客户端信道的延迟 加载 e223 54.6.8 调试配置 e224 54.6.9 配置文件中的生命 周期服务 e224 54.6.10 格式化程序提供程序 e225 54.7 在asp.net中驻留远程 服务器 e225 54.8 类、接口和soapsuds e227 54.8.1 接口 e227 54.8.2 soapsuds e227 54.9 异步远程调用 e228 54.9.1 使用委托和 .net remoting e228 54.9.2 oneway特性 e229 54.10 .net remoting的 安全性 e229 54.11 远程处理和事件 e230 54.11.1 远程对象 e231 54.11.2 事件参数 e232 54.11.3 服务器 e233 54.11.4 服务器配置文件 e233 54.11.5 事件接收器 e234 54.11.6 客户端 e234 54.11.7 客户端配置文件 e235 54.11.8 运行程序 e236 54.12 调用上下文 e236 54.13 小结 e237 第55章 web服务和asp.net e239 55.1 soap e240 55.2 wsdl e241 55.3 web服务 e242 55.3.1 提供web服务 e242 55.3.2 使用web服务 e246 55.4 扩充事件登记示例 e248 55.4.1 事件登记 web服务 e249 55.4.2 事件登记客户端 e253 55.5 使用soap标题交换 数据 e256 55.6 小结 e261 第56章 linq to sql e263 56.1 linq to sql和 visual studio 2010 e264 56.1.1 调用products表 e265 56.1.2 添加linq to sql类 e265 56.1.3 o/r设计器概述 e266 56.1.4 创建product对象 e267 56.2 对象如何映射到linq 对象上 e269 56.2.1 datacontext对象 e270 56.2.2 table[tentity]对象 e274 56.3 脱离o/r设计器工作 e274 56.3.1 创建自己的自定义 对象 e274 56.3.2 通过自定义对象和 linq查询 e275 56.3.3 通过查询限制所调用 的列 e276 56.3.4 使用列名 e277 56.3.5 创建自己的 datacontext对象 e278 56.4 自定义对象和o/r 设计器 e279 56.5 查询数据库 e280 56.5.1 使用查询表达式 e280 56.5.2 查询表达式 e281 56.5.3 使用表达式筛选 e282 56.5.4 执行连接 e282 56.5.5 分组项 e284 56.6 存储过程 e285 56.7 小结 e286 第57章 wpf 3.0 e287 57.1 hello world示例 e287 57.2 活动 e288 57.2.1 ifelseactivity e289 57.2.2 parallelactivity e290 57.2.3 callexternalmethod activity e291 57.2.4 delayactivity e291 57.2.5 listenactivity e292 57.2.6 活动执行模型 e293 57.3 自定义活动 e293 57.3.1 活动的验证 e295 57.3.2 主题和设计器 e296 57.3.3 activitytoolboxitem 和图标 e297 57.3.4 自定义复合活动 e299 57.4 工作流 e305 57.4.1 顺序工作流 e305 57.4.2 状态机工作流 e305 57.4.3 给工作流传递参数 e307 57.4.4 从工作流中返回结果 e308 57.4.5 将参数绑定到活动上 e309 57.5 工作流运行库 e310 57.6 工作流服务 e310 57.6.1 持久性服务 e312 57.6.2 跟踪服务 e313 57.6.3 自定义服务 e315 57.7 与wcf集成 e316 57.8 驻留工作流 e318 57.9 工作流设计器 e319 57.10 从wf 3.x迁移到wf 4 e320 57.10.1 把活动代码提取到 服务中 e320 57.10.2 删除代码活动 e320 57.10.3 同时运行wf 3.x 和4 e321 57.10.4 考虑把状态机迁移到 流程图上 e321 57.11 小结 e321 ................ ..................
-
下载
checkpoint_gesture.zip
checkpoint_gesture.zip
-
下载
SocketTool4.rar
SocketTool4.rar
-
下载
智能车牌识别系统.zip
智能车牌识别系统.zip
-
下载
php:apache 基于docker cron的执行定时任务
php:apache 基于docker cron的执行定时任务
-
下载
AS3506-DISP2p5.for
AS3506-DISP2p5.for
-
下载
LCDWIKI_SPI.zip
LCDWIKI_SPI.zip
-
下载
Labview相关工具包与模块安装.pdf
Labview相关工具包与模块安装.pdf
-
下载
zz-网络安全试题(总).docx
zz-网络安全试题(总).docx
-
下载
java编程语言的发展简史.docx
java编程语言的发展简史.docx
-
下载
2007-2019年浙江理工大学912高等代数考研真题
2007-2019年浙江理工大学912高等代数考研真题
