
《深入理解C#(第3版)》是C#领域不可多得的经典著作。作者在详尽地展示C#各个知识点的同时,更注重从现象中挖掘本质。《深入理解C#(第3版)》深入探索了C#的核心概念和经典特性,并将这些特性融入到代码中,让读者能够真正领会到C#之“深入”与“精妙”。在第2版的基础上,《深入理解C#(第3版)》新增了C# 5的新特性——异步,并更新了随着技术的发展,已经不再适用的内容,确保整本书能达到读者期望的高标准。
如果你略微了解一点C#,就可无障碍地阅读《深入理解C#(第3版)》。
编辑推荐
资深C# MVP扛鼎之作
深入理解语言特性,探究本源
.NET开发人员必读经典 名人推荐
“学习C#语言特性的最佳资源。”
——AndyKirsch,Venga
“本书使我的C#水平更上一层楼。”
——DustinLamne,CodeHarvest
“每一位.NET开发人员都至少应该阅读一遍的案头必备图书。”
——DrorHelper,BetterPlace
“本书无疑是我读过的最佳C#参考书。”
——JonParish,Datasift 媒体推荐
“学习C#语言特性的最佳资源。”——Andy Kirsch,Venga
“本书使我的C#水平更上一层楼。”——Dustin Laine,Code Harvest
“每一位.NET开发人员都至少应该阅读一遍的案头必备图书。”———Dror Helper,Better Place
“本书无疑是我读过的最佳C#参考书。”——Jon Parish,Datasift 作者简介
Jon Skeet
谷歌软件工程师,微软资深C# MVP,拥有10余年C#项目开发经验。自2002年以来,他一直是C#社区、新闻组、国际会议和Stack Overflow网站上非常活跃的技术专家,回答了数以万计的C#和.NET相关问题。 目录
第一部分基础知识
第1章C#开发的进化史
1.1从简单的数据类型开始
1.1.1C#1中定义的产品类型
1.1.2C#2中的强类型集合
1.1.3C#3中自动实现的属性
1.1.4C#4中的命名实参
1.2排序和过滤
1.2.1按名称对产品进行排序
1.2.2查询集合
1.3处理未知数据
1.3.1表示未知的价格
1.3.2可选参数和默认值
1.4LINQ简介
1.4.1查询表达式和进程内查询
1.4.2查询XML
1.4.3LINQtoSQL
1.5COM和动态类型
1.5.1简化COM互操作
1.5.2与动态语言互操作
1.6轻松编写异步代码
1.7剖析.NET平台
1.7.1C#语言
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.1C#在类型系统世界中的位置
2.2.2C#1的类型系统何时不够用
2.2.3类型系统特征总结
2.3值类型和引用类型
2.3.1现实世界中的值和引用
2.3.2值类型和引用类型基础知识
2.3.3走出误区
2.3.4装箱和拆箱
2.3.5值类型和引用类型小结
2.4C#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.2JIT编译器如何处理泛型
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泛型的对比
...... 文摘
版权页:
变量test的初始化使用了上节介绍的匿名方法,而print变量的初始化使用了C#2的另一个特性——方法组转换,它简化了从现有方法创建委托的过程。
我不是说上述代码要比C#1的代码简单,只是说它要强大得多。
具1本地说,它使我们可以非常轻松地更改测试条件并对每个匹配项采取单独的操作。涉及的委托变量(test和print)可以传递给一个方法——相同的方法可以用于测试完全不同的条件以及执行完全不同的操作。当然,可以将所有测试和打印都放到一条语句中,如代码清单1—12所示。这样更好一些,但delegate(Productp)还是很碍事,大括号也是。它们是代码中的不和谐音符,有损可读性。如果一直进行相同的测试和执行相同的操作,我还是喜欢C#1的版本。(虽然说起来很平常,但还是要提醒你,完全可以在使用C#2或C#3时使用C#1的版本。谁都不会用推土机来种植郁金香,我们这里使用的技术显得有点儿“小题大做”了。)C#3拿掉了以前将实际的委托逻辑包裹起来的许多无意义的东西,从而有了极大的改进(参见代码清单1—13)。
Lambda表达式将测试放在一个非常恰当的位置。再加上一个有意义的方法名,你甚至能大声念出代码,几乎不用怎么思考就能理解代码的含义。C#2的灵活性也得到了保留——传递给Where的参数值可以来源于一个变量。此外,如果愿意,完全可以使用Action(Productp),而不是硬编码的Console.WriteLine调用。 | ISBN | |
|---|---|
| 出版社 | 人民邮电出版社 |
| 作者 | 斯基特 (Jon Skeet) |
| 尺寸 | 16 |