终于,我也要出一本C#的书了 - 个人写做历程与C#书单推荐

我以前的面试题停了好久,是由于 - 我写书去了。html

前言

我于2012年3月开始工做,到如今立刻就满六年了。这六年里,我从一个连Sql server是什么都不知道,只会写最简单的c#的程序员开始作起,一步一步从一个籍籍无名的外包公司奋斗到了一个比较大的金融机构的中层。在奋斗的过程当中,我也走了不少弯路,一度十分消沉,但幸运的是,最终个人努力并无白费。程序员

我一直就是一个比较喜欢写文章的人。在平时工做时,我也喜欢把不少必要的东西(例如服务器的ip地址,登陆密码等)写下来,并作成文档以便随时查阅。在前几年,我对本身的公司不满意,在业余时间一直在准备跳槽,因而,我搜集了不少面试题和解答。后来我发现这样准备毫无系统性,便去买了本书开始看。说来惭愧,我在工做的第三年才开始系统的看书,那时买的第一本书是《精通C#》第6版。在读书的同时,我也知道了其实C#领域最出名的书是clr via c#,并买了一本,重写了本身的文章(以前它们只是面试题的解答),慢慢贴到网上,成为了面试题系列。在这个系列的编写过程当中,我也参考了博客园上不少杰出的网友的优秀文章。这个过程当中个人技术水平提升了不少。在写博客的同时,我也获得了某公司编辑的注意。经过博客园站内信,编辑但愿我写一本关于C#的书。当时我清点了一下本身文章存货,发现总字数已经有大概10万左右,并且那时候公司工做也不忙,就赞成了。面试

书籍写做

在签了初步合同以后,编辑将个人书命名为C#笔试面试题集,由于毕竟我在网上的博客和面试题关系比较密切。我根据本身电脑里已有的文章存货,提交了目录,并拟定为7大块:
1 .NET基础知识,包括类型基础,面向对象等
2 C#重要特性,包括委托事件,泛型反射,LINQ等
3 设计模式
4 数据库基础知识
5 算法基础知识
6 测试,部署和持续集成
7 多线程算法

之因此包括这么多内容,是由于我在准备面试时对这些都写了文章。但在写书的过程当中,我逐渐发现,个人“野心太大”了。若是我按照上面的大纲去写书,我不只时间不够,目前的能力也彻底没法胜任:个人算法水平很通常,也不是设计模式和数据库专家,对测试和部署的经验也很少。并且,即便在刚开始写.NET基础知识这部分我自觉得最“擅长”的部分时,我也在查资料和参考其余书时,发现个人认知其实还颇为皮毛。所以,在刚开始写书时,虽然是在过去文章的基础上改进,个人进度仍然很慢。有时候,我还会不时的在网上撞到一篇超强文章,它比个人认识透彻多了,致使以前写的大部份内容都得重写。数据库

在写书进行了几个月以后,我决定从书中砍掉设计模式,数据库,算法,测试和部署,并令书更加集中于c#的讨论。这样一来能够不让书的内容过于松散,二来也让本身更有信心。如今,整个书已经写了90%,这个月底就所有交稿了。在交稿以后,相信还会有一段审稿和与编辑讨论的时间。等到该书正式出版时,我再来通知你们。如今这本书的内容包括:
1 .NET基础知识,包括程序集,类型基础,内存分配,面向对象,字符串,GC等。介绍了一点关于IL的知识。
2 C#,包括委托事件,泛型反射,LINQ,DLR,C#6和7的新特性等
3 多线程,包括多线程基础知识,同步与锁,异步模型,async/await等编程

第一部分主要参考了clr via c#的第一和第二部分以及其余国内外相关书
第二部分主要参考了深刻理解c#以及其余国内外相关书
第三部分主要参考了clr via c#最后一部分(关于线程的),深刻理解c#的async/await那部分。我试图用较为容易理解的语言将这两本书的相关章节解释清楚。c#

我对本书的定位是:适合有1-2年开发经验的人士阅读。该书的书名已经肯定为《c# 从现象到本质》,将会有如下几个特色:windows

  1. 与时俱进,对最新推出的C# 7的特性也有涵盖,但不会介绍最基础的c#语法
  2. 夯实基础,深刻本质,并不是简单的msdn搬运工 + 一段又长又没有注释的代码这种风格的图书,例如,《21天。。。》。本书会提到IL,并不时张贴IL代码以便深刻分析各类语法糖背后的实质
  3. 目前市面上关于c#多线程的中文资料较少,大部分c#书籍在这部分都是简单一提,但个人书中多线程将自成一篇,包括5章,使用通俗易懂的文字解释c#多线程相关的各类各样的锁和同步工具,以及异步编程模型,直到最新的async/await
  4. 重视英语,不少名词旁边配有对应英文翻译

参考书籍

我在写做的时候参考了大量书籍,从大名鼎鼎的赵三本到不少博客园网友写的书,和其余中英文书籍。在阅读他人的书籍时,我也发现有些书真的十分优秀,但却默默无闻。有些书的某些章节颇为精彩。这里我也将它们列出来,做为一个我本身推荐的C#进阶书单。设计模式

若是你基础不是很扎实,那么能够找来《精通C# 第6版》入门(不用看wpf,wcf那几部分),或者《Learning hard C#学习笔记》也行。前者内容比较多,后者相对比较简练,能够加强学习信心。但最好的入门书我认为是《NET 4.0面向对象编程漫谈 基础篇》这本。服务器

下面的书都不是用来入门的。

CLR via C#第四版
这本书实在过重要了,太有名了。实际上,它几乎出如今任何一本讲C#的书的参考资料中。该书虽然如今看来已经有点“过期”了,但它对CLR的讲解是十分透彻的。不少国人的C#书籍,都或多或少的受了这本书的影响。

该书虽然很厚,但结构十分清晰,分为五大部分:
1. CLR基础,讲程序集的结构和部署,IL,JIT,类型系统。第一章很重要,必须好好看,第二章和第三章相对不那么重要。
2. 设计类型,该部分遍览了一个类型能够拥有的全部成员,全部章节都很重要,第12章泛型尤为重要。
3. 基本类型,13,14,16,17,19章很重要,15和18能够大概看看。
4. 核心机制,主要包括异常处理,GC,应用程序域,反射和序列化。
5. 线程处理,做为Windows操做系统的大师,做者对线程的理解很是深刻。26章主要是概念,27-30章全是多线程,通读这部分对多线程的理解帮助极大。不过,该部分充斥大量专有名词,对非windows高手来讲不太友好。能够和其余多线程书配合着看。

这本书因为成书较早,所以缺失了对C#一些较新版本功能的介绍,例如LINQ等。此时,就须要另一本大名鼎鼎的书 - 《深刻理解C#》出来救场了。

深刻理解C#
这本书相比上一本不那么“底层”,不过,它的阅读难度也不小。对于更喜欢特性而非原理的读者,能够通读一遍此书,它按照演进顺序讲述了C#1-5的全部特性,对LINQ,异步的讲解既实用又涉及原理。本书全部章节都很重要。

.NET设计规范:约定,惯用法与模式
在争论应该是抽象类仍是接口,应该是类仍是结构时,咱们其实看看这本书就够了,它早就给了咱们一大堆最佳实践。不知道怎么书写异常处理?看看第七章吧。本书实际上就是一个代码规范集合。

本书适合在须要的时候随时查阅。以上三本书相辅相成,包括了一个中级开发者须要掌握的全部主语言相关技能(实际上,即便只理解一半也已经足够好了),故被某知名程序员称为“赵三本”。该程序员还认为,充分理解了“赵三本”的开发者在大陆的待遇应至少为20k人民币每个月,即中级开发者。

Pro .NET Performance
本书以一个独特的视角 – 性能做为切入点,讲述了.NET程序和类型在性能这一方面的体现。该书的前两章主要讨论了性能测试的衡量方法和工具,第三章深刻了类型系统,第四章详细的讲述了GC,这两章值得细读。

本书目前只有英文版,阅读难度很大。

.NET本质论 第一卷 公共语言运行时(Don Box)
本书实际上就是在讲CLR,它也是对CLR的探讨中,我目前知道的书中,最底层,最深刻的一本。该书的做者同时也是COM专家,所以,对于CLR这个更好的COM来讲,他必然也是得心应手。

本书中我最喜欢的部分是第6章,做者使用了一章的篇幅讨论了方法调用。该书过于底层,成书年代也很早,读起来可能有些脱离实际的感受。

NET 4.0面向对象编程漫谈 基础篇
本书的做者是金旭亮老师。他的这本书(以及后面相邻的那本)以生动有趣的笔触讲解了.NET的方方面面。我我的很是喜欢这本书。若是你以为《CLR via C#》太枯燥,行文方式又过于老外,看不下去,能够先看这本。这本书虽然没有《CLR via C#》那么深,但对于底层也有颇多涉及,它和不少粗制滥造的“拖控件教程”有着本质的不一样。

NET 4.0面向对象编程漫谈 应用篇
做者在此书中着重分析了进程和线程以及在C#中的实地应用。这是多线程方面来自国人的为数较少的好资料。这本书和上一本同样,我强烈推荐。

你必须知道的.NET(第二版)
本书的编排顺序十分独特。它的视角是彻底面向对象的,而且将.NET各个知识点以逐个对比的方式呈如今了读者面前,第一次阅读时,可能会以为不太适应。本书有必定深度,并且做者行文比较幽默,所以读起来也不是很枯燥。

本书有不少SOLID和设计模式方面的内容,对开发者不无裨益。

Threading in C#
本书(以网页形式在网上公开)提供了另外一个关于C#多线程的介绍资料,目前已经有翻译版本https://blog.gkarch.com/threading/part1.html。该书对.NET提供的各类各样的锁都有所涉及,能够和《CLR via C#》最后四章一块儿看。

.NET之美 .net关键技术深刻解析
本书是博客园网友张子阳的做品。这本书的委托那章是经典之做。

其余多线程书籍包括async in c#(只有英文),c#并发编程经典实例(这本内容新,但实在是。。。难懂)以及C#并行编程高级教程(这本难度还比较温和但没有async/await)。

结语

我接受并坚持把这本书写完的驱动力主要是:首先,我对技术与.net有着浓厚的兴趣,经常在写书时搞到废寝忘食,甚至在这段时间内以为作其余事情都没意思了。另外,个人文章受到出版社编辑的赏识是对我能力的一种确定,既然我接下了这个任务就应该认真完成,对得起本身写的每个字,不误导读者。最后,我也但愿经过写书这个契机认识更多的朋友,给本身带来更多的机会。整个写书的过程当中,我收获了不少,也很快乐。

相关文章
相关标签/搜索