深入理解C#(第3版)

斯基特 (Jon Skeet)

出版时间

2014-03-31

ISBN

9787115346421

评分

★★★★★

标签

编程

书籍介绍

本书是世界顶级技术专家“十年磨一剑”的经典之作,在C#和.NET领域享有盛誉。与其他泛泛介绍C#的书籍不同,本书深度探究C#的特性,并结合技术发展,引领读者深入C#的时空。作者从语言设计的动机出发,介绍支持这些特性的核心概念。作者将新的语言特性放在C#语言发展的背景之上,用极富实际意义的示例,向读者展示编写代码和设计解决方案的最佳方式。同时作者将多年的C#开发经验与读者分享,读者可咀其精华、免走弯路,使程序设计水平更上一层楼。

本书在第2版的基础上全面调整了C#语言的细节,改写了随着技术的发展已经不再适用的内容,并全面介绍了C# 5新增的大特性——异步,以及两个小特性,延续了读者期望的高标准。

AI导读
核心看点
  • 深度剖析C#语言特性,从设计动机出发解读核心概念
  • 系统梳理C# 1.0至5.0版本演进,详解异步等新特性
  • 聚焦语言本身而非框架,提供编写高效代码的最佳实践
适合谁读
  • 具备C#基础,希望深入理解语言底层机制的开发者
  • 从事.NET开发,追求代码质量与最佳实践的工程师
  • 对C#语言设计原理及版本演进历史感兴趣的读者
读前提醒
  • 本书侧重语言原理,非入门教程,需具备一定编程基础
  • 部分章节逻辑绕口,建议结合官方规范对照阅读
  • 重点理解委托、迭代器及LINQ等核心特性的实现细节
读者共识
  • 公认的C#经典之作,内容深度与权威性备受推崇
  • 作者表达风格晦涩,部分读者反映阅读体验较累
  • 翻译质量参差不齐,建议有条件者参考英文原版

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "当有多个类型参数时,可以用一个适合整个类型含意的单词来分隔它们,例如,我会使用dictionary of string to int来强调映射的部分,而不会使用tuple of string and int。"
  • "When there are multiple type parameters, I find it makes sense to separate them with a word appropriate to the meaning of the overall type—so I’d talk about a “dictionary of string to int” in order to emphasize the mapping aspect, but a “tuple of string and int.”"
  • "...如果仅仅是接受目标的实现,而不去明确定义从哪里开始,那么一切就没有问题,至少在出错前没什么问题。 如果想弄明白究竟发生了什么才能达到预期效果,事情就变得有点棘手了。既然本书挂着“深入理解”的名头,那么我就假设你想知道这些细节。最终,我保证你在用 await 时会更加自信,并且更加高效。 即便如此,我还是建议各位根据自身情况,在两个不同级别发展阅读异步代码的能力。如果无须理解这里列出的单独步骤,就让它们随风而去好了。你可以像阅读同步代码那样去阅读异步代码,只需留意代码异步等待某些操作完成时的位置即可。然后,当遇到代码不按预期执行这种棘手问题时,可深入研究一下哪些地方涉及了哪些线程,以及调用"
  • "那么,要如何实现GetEnumerator方法呢?首先要知道,我们需要在某个地方存储某个状态。迭代器模式的一个重要方面就是,不用一次返回所有数据——调用代码一次只需获取一个元素。这意味着我们需要确定访问到了数组中的哪个位置。在了解C# 2编译器为我们所做的事情时,迭代器的这种状态特质十分重要,因此,要密切关注本例中的状态。 那么,这个状态值要保存在哪里呢?假设我们尝试把它放在IterationSample类自身里面,让它既实现IEnumerator接口又实现IEnumerable接口。乍一看,这似乎是个好主意—— 毕竟,我们是将数据保存在正确的位置,其中也包括了起点。GetEnumerator"
  • "我是那种为了在圣诞节到来那一刻尽早打开礼物,宁愿在平安夜熬到凌晨不睡的人。同样,我(这种迫不及待的人)也不可能在向大家展示简洁的C# 2解决方法之前,浪费过多的时间。"
  • "这个结果中有几个重要的事情需要牢记: 在第一次调用MoveNext之前,CreateEnumerable中的代码不会被调用; 所有工作在调用MoveNext时就完成了,获取Current的值不会执行任何代码; 在yield return的位置,代码就停止执行,在下一次调用MoveNext时又继续执行; 在一个方法中的不同地方可以编写多个yield return语句; 代码不会在后的yield return处结束,而是通过返回false的MoveNext调用来结束方法的执行。 第一点尤为重要,因为它意味着如果在方法调用时需要立即执行代码,就不能使用迭代器块, 如参数验证。如果你将普通检查放入用迭"
  • "如果input和常量表达式都是整型表达式,那么会使用==来进行比较;如果是其他类型,则使用静态方法object.Equals进行比较。"
作者简介
作者简介: Jon Skeet 谷歌软件工程师,微软资深C# MVP,拥有10余年C#项目开发经验。自2002年以来,他一直是C#社区、新闻组、国际会议和Stack Overflow网站上非常活跃的技术专家,回答了数以万计的C#和.NET相关问题。 译者简介: 姚琪琳 具有多年.NET和Java开发经验,热爱C#,喜欢翻译和阅读。曾翻译过《精通C#(第6版)》、《C#图解教程(第4版)》、《C#与.NET 4高级程序设计(第5版)》等多本经典C#书籍。目前就职于ThoughtWorks。新浪微博:@珧麒麟。
目录
第一部分 基础知识
第1章 C#开发的进化史  2
1.1  从简单的数据类型开始  3
1.1.1  C# 1中定义的产品类型  3
1.1.2  C# 2中的强类型集合  4

显示全部
用户评论
翻译得比较差,非常的啰嗦
很好看的。。
2020.10.15 csharp改名C*😛
历时一年终于阅读完了,但是觉得里面的东西值得多读几遍。不过不知道为什么觉得翻译得非常拗口,有点难读。
看了一遍,dynamic 那块看得不懂,可能是到后来翻译已经乱来了,“二进制搜索”,嗯。很厉害的书,感觉以后可以再读一遍。
还行吧~ 如果选入门后 再读这本也不错,如果 想更多代码推荐via
内容形式都挺好,但我严重怀疑原作者有语言障碍,他好像不太会组织语言。或者说他擅长把一句简单的话说的极其复杂。不怪翻译。也可能是作者功力太深厚,看介绍说是大神,十年磨一剑写的这书。或许就是武林高手草木皆兵的段位,新手应该是无法理解他在说什么,这是对此书内容尊重的说法。但是对于作者语言的表达我的观点还是上面所说,他不适合写书,可能有的大神就是不会写作吧。废话能有1/5,示例代码也不全。或许只有很高段位的人才能从这蹩脚的语言中汲取一些新观点吧!新手真不适合读此书。那种有多年C#开发经验的可以翻翻,就当找人闲聊经验,也别太当一本书去认真阅读,因为读起来费劲啊,越认真读影响思考。
书不错,就是翻译的有些地方太拗口了,看的云里雾里的,
囫囵吞枣看完
“强制类型转换相当于告诉编译器:“嘿嘿,我知道的比你多一点点“。但是这也意味着你可能是错的。” 顺便一提,这是迄今为止遇到的最好的C#书
下载
收藏