主页 详情

《深入理解C# 第3版》_(英)斯基特著_13503953_9787115346421

【书名】:《深入理解C# 第3版》
【作者】:(英)斯基特著
【出版社】:北京:人民邮电出版社
【时间】:2014
【页数】:490
【ISBN】:9787115346421
【SS码】:13503953

最新查询

内容简介

第一部分 基础知识

第1章 C#开发的进化史

1.1从简单的数据类型开始

1.1.1 C# 1中定义的产品类型

1.1.2 C# 2中的强类型集合

1.1.3 C# 3中自动实现的属性

1.1.4 C# 4中的命名实参

1.2排序和过滤

1.2.1按名称对产品进行排序

1.2.2查询集合

1.3处理未知数据

1.3.1表示未知的价格

1.3.2可选参数和默认值

1.4 LINQ简介

1.4.1查询表达式和进程内查询

1.4.2查询XML

1.4.3 LINQ to SQL

1.5 COM和动态类型

1.5.1简化COM互操作

1.5.2与动态语言互操作

1.6轻松编写异步代码

1.7剖析.NET平台

1.7.1 C#语言

1.7.2运行时

1.7.3框架库

1.8怎样写出超炫的代码

1.8.1采用代码段形式的全能代码

1.8.2教学代码不是产品代码

1.8.3你的新朋友:语言规范

1.9小结

第2章 C#1所搭建的核心基础

2.1委托

2.1.1简单委托的构成

2.1.2合并和删除委托

2.1.3对事件的简单讨论

2.1.4委托总结

2.2类型系统的特征

2.2.1 C#在类型系统世界中的位置

2.2.2 C# 1的类型系统何时不够用

2.2.3类型系统特征总结

2.3值类型和引用类型

2.3.1现实世界中的值和引用

2.3.2值类型和引用类型基础知识

2.3.3走出误区

2.3.4装箱和拆箱

2.3.5值类型和引用类型小结

2.4 C# 1之外:构建于坚实基础之上的新特性

2.4.1与委托有关的特性

2.4.2与类型系统有关的特性

2.4.3与值类型有关的特性

2.5小结

第二部分C# 2:解决C#1的问题

第3章 用泛型实现参数化类型

3.1为什么需要泛型

3.2日常使用的简单泛型

3.2.1通过例子来学习:泛型字典

3.2.2泛型类型和类型参数

3.2.3泛型方法和判读泛型声明

3.3深化与提高

3.3.1类型约束

3.3.2泛型方法类型实参的类型推断

3.3.3实现泛型

3.4高级泛型

3.4.1静态字段和静态构造函数

3.4.2 JIT编译器如何处理泛型

3.4.3泛型迭代

3.4.4反射和泛型

3.5泛型在C#和其他语言中的限制

3.5.1泛型可变性的缺乏

3.5.2缺乏操作符约束或者“数值”约束

3.5.3缺乏泛型属性、索引器和其他成员类型

3.5.4同C++模板的对比

3.5.5和Java泛型的对比

3.6小结

第4章 可空类型

4.1没有值时怎么办

4.1.1为什么值类型的变量不能是null

4.1.2在C# 1中表示空值的模式

4.2 System.Nullable〈T〉和System.Nullable

4.2.1 Nullable〈T〉简介

4.2.2 Nullable〈T〉装箱和拆箱

4.2.3 Nullable〈T〉实例的相等性

4.2.4来自非泛型Nullable类的支持

4.3 C# 2为可空类型提供的语法糖

4.3.1?修饰符

4.3.2使用null进行赋值和比较

4.3.3可空转换和操作符

4.3.4可空逻辑

4.3.5对可空类型使用as操作符

4.3.6空合并操作符

4.4可空类型的新奇用法

4.4.1尝试一个不使用输出参数的操作

4.4.2空合并操作符让比较不再痛苦

4.5小结

第5章 进入快速通道的委托

5.1向笨拙的委托语法说拜拜

5.2方法组转换

5.3协变性和逆变性

5.3.1委托参数的逆变性

5.3.2委托返回类型的协变性

5.3.3不兼容的风险

5.4使用匿名方法的内联委托操作

5.4.1从简单的开始:处理一个参数

5.4.2匿名方法的返回值

5.4.3忽略委托参数

5.5匿名方法中的捕获变量

5.5.1定义闭包和不同类型的变量

5.5.2捕获变量的行为

5.5.3捕获变量到底有什么用处

5.5.4捕获变量的延长生存期

5.5.5局部变量实例化

5.5.6共享和非共享的变量混合使用

5.5.7捕获变量的使用规则和小结

5.6小结

第6章 实现迭代器的捷径

6.1 C# 1:手写迭代器的痛苦

6.2 C# 2:利用yield语句简化迭代器

6.2.1迭代器块和yield return简介

6.2.2观察迭代器的工作流程

6.2.3进一步了解迭代器执行流程

6.2.4具体实现中的奇特之处

6.3真实的迭代器示例

6.3.1迭代时刻表中的日期

6.3.2迭代文件中的行

6.3.3使用迭代器块和谓词对项进行延迟过滤

6.4使用CCR实现伪同步代码

6.5小结

第7章 结束C# 2的讲解:最后的一些特性

7.1分部类型

7.1.1在多个文件中创建一个类型

7.1.2分部类型的使用

7.1.3 C# 3独有的分部方法

7.2静态类型

7.3独立的取值方法/赋值方法属性访问器

7.4命名空间别名

7.4.1限定的命名空间别名

7.4.2全局命名空间别名

7.4.3外部别名

7.5 pragma指令

7.5.1警告pragma

7.5.2校验和pragma

7.6非安全代码中固定大小的缓冲区

7.7把内部成员暴露给选定的程序集

7.7.1简单情况下的友元程序集

7.7.2为什么使用Internals-VisibleTo

7.7.3InternalsVisibleTo和签名程序集

7.8小结

第三部分 C# 3:革新写代码的方式

第8章 用智能的编译器来防错

8.1自动实现的属性

8.2隐式类型的局部变量

8.2.1用var声明局部变量

8.2.2隐式类型的限制

8.2.3隐式类型的优缺点

8.2.4建议

8.3简化的初始化

8.3.1定义示例类型

8.3.2设置简单属性

8.3.3为嵌入对象设置属性

8.3.4集合初始化程序

8.3.5初始化特性的应用

8.4隐式类型的数组

8.5匿名类型

8.5.1第一次邂逅匿名类型

8.5.2匿名类型的成员

8.5.3投影初始化程序

8.5.4重点何在

8.6小结

第9章 Lambda表达式和表达式树

9.1作为委托的Lambda表达式

9.1.1准备工作:Func〈...〉委托类型简介

9.1.2第一次转换成Lambda表达式

9.1.3用单一表达式作为主体

9.1.4隐式类型的参数列表

9.1.5单一参数的快捷语法

9.2使用List〈T〉和事件的简单例子

9.2.1列表的过滤、排序和操作

9.2.2在事件处理程序中进行记录

9.3表达式树

9.3.1以编程方式构建表达式树

9.3.2将表达式树编译成委托

9.3.3将C# Lambda表达式转换成表达式树

9.3.4位于LINQ核心的表达式树

9.3.5 LINQ之外的表达式树

9.4类型推断和重载决策的改变

9.4.1改变的起因:精简泛型方法调用

9.4.2推断匿名函数的返回类型

9.4.3分两个阶段进行的类型推断

9.4.4选择正确的被重载的方法

9.4.5类型推断和重载决策

9.5小结

第10章 扩展方法

10.1未引入扩展方法之前的状态

10.2扩展方法的语法

10.2.1声明扩展方法

10.2.2调用扩展方法

10.2.3扩展方法是怎样被发现的

10.2.4在空引用上调用方法

10.3 .NET 3.5中的扩展方法

10.3.1从Enumerable开始起步

10.3.2用Where过滤并将方法调用链接到一起

10.3.3插曲:似曾相识的Where方法

10.3.4用Select方法和匿名类型进行投影

10.3.5用OrderBy方法进行排序

10.3.6涉及链接的实际例子

10.4使用思路和原则

10.4.1“扩展世界”和使接口更丰富

10.4.2流畅接口

10.4.3理智使用扩展方法

10.5小结

第11章 查询表达式和LINQ to Objects

11.1 LINQ介绍

11.1.1 LINQ中的基础概念

11.1.2定义示例数据模型

11.2简单的开始:选择元素

11.2.1以数据源作为开始,以选择作为结束

11.2.2编译器转译是查询表达式基础的转译

11.2.3范围变量和重要的投影

11.2.4 Cast、 OfType和显式类型的范围变量

11.3对序列进行过滤和排序

11.3.1使用where子句进行过滤

11.3.2退化的查询表达式

11.3.3使用orderby子句进行排序

11.4 let子句和透明标识符

11.4.1用let来进行中间计算

11.4.2透明标识符

11.5连接

11.5.1使用join子句的内连接

11.5.2使用join .into子句进行分组连接

11.5.3使用多个from子句进行交叉连接和合并序列

11.6分组和延续

11.6.1使用group .by子句进行分组

11.6.2查询延续

11.7在查询表达式和点标记之间作出选择

11.7.1需要使用点标记的操作

11.7.2使用点标记可能会更简单的查询表达式

11.7.3选择查询表达式

11.8小结

第12章 超越集合的LINQ

12.1使用LINQ to SQL查询数据库

12.1.1数据库和模型

12.1.2用查询表达式访问数据库

12.1.3包含连接的查询

12.2用IQueryable和IQueryProvider进行转换

12.2.1IQueryable〈T〉和相关接口的介绍

12.2.2模拟接口实现来记录调用

12.2.3把表达式粘合在一起:Queryable的扩展方法

12.2.4模拟实际运行的查询提供器

12.2.5包装IQueryable

12.3 LINQ友好的API和LINQ to XML

12.3.1 LINQ to XML中的核心类型

12.3.2声明式构造

12.3.3查询单个节点

12.3.4合并查询操作符

12.3.5与LINQ和谐共处

12.4用并行LINQ代替LINQ to Objects

12.4.1在单线程中绘制曼德博罗特集

12.4.2 ParallelEnumerable、ParallelQuery和AsParallel

12.4.3调整并行查询

12.5使用LINQ to Rx反转查询模型

12.5.1Iobservable〈T〉和Iobserver〈T〉

12.5.2简单的开始

12.5.3查询可观察对象

12.5.4意义何在

12.6扩展LINQ to Objects

12.6.1设计和实现指南

12.6.2示例扩展:选择随机元素

12.7小结

第四部分 C# 4:良好的交互性

第13章 简化代码的微小修改

13.1可选参数和命名实参

13.1.1可选参数

13.1.2命名实参

13.1.3两者相结合

13.2改善COM互操作性

13.2.1在C# 4之前操纵Word是十分恐怖的

13.2.2可选参数和命名实参的复仇

13.2.3按值传递ref参数

13.2.4调用命名索引器

13.2.5链接主互操作程序集

13.3接口和委托的泛型可变性

13.3.1可变性的种类:协变性和逆变性

13.3.2在接口中使用可变性

13.3.3在委托中使用可变性

13.3.4复杂情况

13.3.5限制和说明

13.4对锁和字段风格的事件的微小改变

13.4.1健壮的锁

13.4.2字段风格的事件

13.5小结

第14章 静态语言中的动态绑定

14.1何谓、何时、为何、如何

14.1.1何谓动态类型

14.1.2动态类型什么时候有用,为什么

14.1.3 C# 4如何提供动态类型

14.2关于动态的快速指南

14.3动态类型示例

14.3.1 COM和Office

14.3.2动态语言

14.3.3纯托管代码中的动态类型

14.4幕后原理

14.4.1 DLR简介

14.4.2 DLR核心概念

14.4.3 C#编译器如何处理动态

14.4.4更加智能的C#编译器

14.4.5动态代码的约束

14.5实现动态行为

14.5.1使用Expandoobj ect

14.5.2使用Dynamicobj ect

14.5.3实现IDynamicMetaobject-Provider

14.6小结

第五部分C# 5:简化的异步编程

第15章 使用async/await进行异步编程

15.1异步函数简介

15.1.1初识异步类型

15.1.2分解第一个示例

15.2思考异步编程

15.2.1异步执行的基础

15.2.2异步方法

15.3语法和语义

15.3.1声明异步方法

15.3.2异步方法的返回类型

15.3.3可等待模式

15.3.4 await表达式的流

15.3.5从异步方法返回

15.3.6异常

15.4异步匿名函数

15.5实现细节:编译器转换

15.5.1生成的代码

15.5.2骨架方法的结构

15.5.3状态机的结构

15.5.4一个入口搞定一切

15.5.5围绕await表达式的控制

15.5.6跟踪栈

15.5.7更多内容

15.6高效地使用async/await

15.6.1基于任务的异步模式

15.6.2组合异步操作

15.6.3对异步代码编写单元测试

15.6.4可等待模式的归来

15.6.5在WinRT中执行异步操作

15.7小结

第16章 C# 5附加特性和结束语

16.1 foreach循环中捕获变量的变化

16.2调用者信息特性

16.2.1基本行为

16.2.2日志

16.2.3实现INotifyProperty-Changed

16.2.4在非.NET 4.5环境下使用调用者信息特性

16.3结束语

附录A LINQ标准查询操作符

附录B .NET中的泛型集合

附录C版本总结


书查询(www.shuchaxun.com)本网页唯一编码:
ed4e972775f63c9c252885ed69546a33#a9908f825ea93aaf5116ae752612d260#118593315#深入理解C#13503953.zip