如果希望成为一个C# 高手,或者至少是合格的C# 程序员,应该懂些什么?《C#从现象到本质》(以下简称本书)试图回答这个问题。实际上,在本书问世之前,市面上已经有很多优秀的C# 书籍,例如著名的《CLR via C#》《C# in Depth》,本书也参考了其中一些章节,但加入了这两本书没有覆盖到的一些重要知识点。本书基于C# 7.0编写。

一个合格的C# 程序员必须熟悉C# 最核心的语言特性。本书没有讲基础的C# 语法,例如if/else/switch/while等等,因为人人都会。本书重点强调的是引用类型和值类型的区别和联系、委托与事件、泛型、反射、GC、LINQ相关、DLR相关,等等。这些知识对一些人来说,可能在实际开发中从来没有用到(例如DLR),或者一直都在使用但不自知(例如LINQ中隐含了委托);但是,对这些内容是否深入理解,是区分一个批量生产的C# 程序员与一个合格的C# 程序员的很好方法。也许,你会觉得这些东西太过细微,似乎是“死抠书本”,但正如著名C# 程序员老赵曾经说的,“您也会觉得这些太细节,真要追究起来似乎也大都不是必须的,无视这些照样可以写程序,做网站,赚工资,但是我不会满足于成为(包括招聘)这样的程序员,暂时也懒得解释掌握这些东西的益处和重要性”。我对此的理解就是“project is cheap, show me theessential”。每个面试者都自带了若干个项目,你的优势在何处呢?你如何显现出水平高人一等呢?本书使用了大量的篇幅讲解C# 的核心语言特性,力求做到有一定的深度,和快速入门的书籍区别开。本书对任何一个语言特性,例如委托,都尽力阐述它的底层实现大概是怎样的,引入它是为了解决什么问题,在它没有出现时,类似的问题又是如何解决的。

一个合格的C# 程序员应该知道程序的本质是什么,程序是如何在操作系统上运行起来的。《CLR via C#》之所以著名,因为它是第一个用CLR的视角来分析C# 语言的书(请仔细体会书名)。CLR的功能、两步编译、IL、对象在内存上的分布,这些内容可能在平时开发上真的用不到,但当你处理性能优化时,就会发现它们非常有用。

一个合格的C# 程序员应该对C# 提供的各种数据结构心中有数。数据结构和算法可谓程序设计的两大支柱,而现在它们的重要性似乎越来越小了,这是因为我们有太多的库可以直接拿来使用,不需要自己去实现一个经典的数据结构。也许我们不需要做到像算法工程师那样,对各种复杂的树(例如红黑树)、图有深刻认识,但是,对常见的数据结构,包括线性表、链表、队列、栈、哈希表等等概念和操作时间复杂度,是任何程序员都应该掌握的。本书的第11章专门讨论C# 的常见数据结构,这是同类型书籍较为少见的话题。

一个合格的C# 程序员应该了解什么是线程以及如何使用C# 进行多线程编程。如果一个WPF程序在执行耗时较长的任务时,界面直接冻结,用户只能坐等,那么这个程序肯定不会令人满意。C# 提供了非常丰富的类库可方便快捷地实现多线程。如果你想了解更多关于线程和进程的基本概念,本书的深度并不够,你可以找任意一本操作系统方面的书去研究。当多个线程有机会操作同一个资源时,线程同步变得十分重要。此时,需要有一个机制令同一时间只有有限个线程可以操作一个资源。C# 使用不同种类的锁来实现它。思路主要有两种:第一种是把资源操作变为原子的,称为用户模式的锁;第二种是将资源和一个内核对象挂钩,线程操作资源时需要去请示内核对象,这称为内核模式的锁。显然,由于访问内核对象速度很慢,还可以将这两种思路综合起来得到混合模式的锁,以加强锁的性能。本书的最后一部分比较详细地讨论了多线程的基本概念、同步以及各种多线程的实现方式,以最新的async/await作为结尾。

如果你已经了解了上面所说的全部内容,那么在小白程序员眼中,你可能已经是一个C# 高手了。但很显然,还有很多很多东西本书没有涉及,例如设计模式、持续集成、测试、数据库访问、性能优化,等等。C# 程序员可以只会拖拖控件就能找到工作,也可以手握利剑解决别人解决不了的问题。我相信每个人都希望成为后者那样的类型,通过自己的努力,进入更好的公司,接触到更具有挑战性的项目,与更厉害的程序员共事。希望本书可以在你学习C# 的过程中,对你有所帮助。

京东地址:https://item.jd.com/12426618.html

作者简介:

郝亦非  资深.NET开发人员,拥有多年开发经验,长期负责后端系统的搭建、重构与维护,对C# 语言理解深刻,在工作中积累了丰富的开发经验,乐于分享,在社区贡献了大量文章。

 

内容简介:

本书详细介绍用C# 语言进行程序开发需要掌握的知识和技术。全书由分三大部分,共21章,第一部分“基础知识”,包括.NET基础知识、C# 类型基础、C# 的面向对象技术、字符串、垃圾回收、异常处理;第二部分“C# 特性”,包括委托和事件、泛型和反射、数据结构、LINQ的相关技术、动态语言运行时;第三部分“多线程和异步”,包括多线程的概念、多线程同步、异步编程的理论与实例、任务并行库等。本书精选大量案例,循序渐进地讲解C# 语言,内容丰富而翔实,并给出练习题,帮助读者更好地巩固所学知识,提升能力。本书还介绍了.NET程序员开发职位要求、技能等级、进阶之路,以及面试要点,可帮助开发者快速进阶,找到适合自己的工作。本书所有案例代码可以下载,地址为https://github.com/s055523/CodeForCSharpBook。

欢迎留下您对本文的讨论,以及对C# 程序员的基础知识方面的感悟。评论获点赞最多的前五位读者将获赠《C#从现象到本质》图书一本(包邮)


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

【送书活动】C# 程序员的自我修养相关推荐

  1. 《C# 程序员的自我修养》送书活动结果公布

    截止到9月28日24:00 ,本次送书活动<C# 程序员的自我修养> 共收到150多位同学参与回复. 以下5位同学将获赠书籍一本: 夏树.Damon.水墨清华.天天.kang   以上同学 ...

  2. 没想到真有此书!!!《一个程序员的自我修养》

    点击蓝色"程序员书单"关注我哟 加个"星标",每天带你看好文,读好书! 本文转自知乎:https://zhuanlan.zhihu.com/p/34994820 ...

  3. 程序员的自我修养(2)——计算机网络(转) good

    相关文章:程序员的自我修养--操作系统篇 几乎所有的计算机程序,都会牵涉到网络通信.因此,了解计算机基础网络知识,对每一个程序员来说都是异常重要的. 本文在介绍一些基础网络知识的同时,给出了一些高质量 ...

  4. 程序员的自我修养(2)——计算机网络

    本文转载至 http://kb.cnblogs.com/page/211867/ 来源: Cricode  发布时间: 2014-07-04 12:39  阅读: 979 次  推荐: 2   原文链 ...

  5. 程序员的自我修养——读《软技能-代码之外的生存指南》笔记

    我记得曾经读过俞甲子的<程序员的自我修养--链接.加载和库>,当时就觉得这个书名起的不太合适,有点不合主题,因为这本书主要讲述链接库的事情,我认为这个是编译器的一部分,是作为程序员要掌握的 ...

  6. 《程序员的自我修养》读书总结

    http://www.jianshu.com/p/47156b4259ed 最初买<程序员的自我修养>这本书,只因为在京东买书差一些钱,不够用优惠券.买回来以后的很长一段时间,我都以为这本 ...

  7. 【读书笔记】程序员的自我修养总结(七)

    [读书笔记]程序员的自我修养总结(七) 标签: [编程开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:这是程序员的自我修养一书的读书总结,随着阅 ...

  8. 程序员的自我修养,好文

    很认真的聊一聊程序员的自我修养 本文正在筹备第二版,以下是第一版主要内容 首先要谈的是,今天的话题所聊的程序员包含哪些人? 在中国,写程序,不仅仅是一种兴趣,更多的时候,还是一种普通职业和谋生工具 大 ...

  9. 【读书笔记】程序员的自我修养总结(一)

    程序员的自我修养总结(一) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:这是程序员的自我修养一书的读书总结,随着阅读的推进,逐步增加内容. 1. 关 ...

  10. 很认真地聊一聊程序员的自我修养

    最近看了<浅谈程序员的英语学习>,对于文章中的观点我非常认同,英语是非常重要的,但文章站的高度还是太高,具体表述的学习方法我不是很认同,也认为不太实际,恰好之前有一篇一直没有发表的文章想重 ...

最新文章

  1. asp.net三种重定向方法的总结
  2. PTA基础编程题目集-6-6 求单链表结点的阶乘和
  3. Scala的类和对象
  4. 基于docker部署的微服务架构(九): 分布式服务追踪 Spring Cloud Sleuth
  5. Spring学习11之AOP
  6. 产品助理要练哪些姿势,才能看上去舞步优雅?
  7. 【python】Macbook的Anaconda查看、创建和管理python环境
  8. ResourceBundle 读取properties文件中文乱码
  9. Mysql union和union all用法
  10. 免费的JavaScript书籍资源
  11. 软件工程毕业设计 毕设课题选题题目汇总
  12. linux中21个中级命令
  13. 2022 CCF中国软件大会(CCF Chinasoft)“软件可信性与供应链安全前沿进展”论坛成功召开...
  14. 志强:经过测试有效的四种引流方法
  15. 小王的尴尬日常(一)--使用RSA公钥证书解密
  16. 线性同余方程和中国剩余定理学习笔记
  17. VS Code 配置第三方库 类似pygame
  18. windows 记得pin码 忘记登录密码
  19. 《MLB棒球创造营》:走近棒球运动·华盛顿国民队
  20. Export metadata for 'Type' is missing and no defau

热门文章

  1. 远程访问CENTOS的MYSQL数据库设置
  2. 『中级篇』Dockerfile详解(17)
  3. 016-Spring Boot JDBC
  4. LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字
  5. 史上最全最常用批处理260多个打包下载
  6. VS.NET调试问题
  7. 一篇文章了解Liquid模版引擎
  8. .NET下如何拦截鼠标、键盘消息?Win32NET来帮你
  9. C# Jpush 极光推送消息推送
  10. 如何通过 C# 自动捕获一个文件的变更?