《深入理解C#(第2版)》的读后感10篇
《深入理解C#(第2版)》是一本由Jon Skeet著作,人民邮电出版社出版的平装图书,本书定价:79.00元,页数:445,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。
《深入理解C#(第2版)》读后感(一):了解.NET特性改进的好书
这本是介绍.NET发展过程中各个版本新特性的好书。介绍了一系列的.NET特性改进的过程。重点如泛型,可空类型,扩展方法,Lambda表达式,集合初始化列表,Linq,及动态类型等等。当然这本书与CLR via C#全面介绍.NET运行机制,动态语言运行时及各种语法规范有很大不同。但对你贯穿.NET各个版本,快速掌握新版本新特性,及理解这种变化特性的根缘,是绝对有相当大的帮助的。
《深入理解C#(第2版)》读后感(二):委托-匿名方法-lamda表达式-linq
终于再次清晰了什么是委托的思路,以及委托和事件的区别
再循序渐进的明白匿名方法就是委托的简单语法糖,而lamada又是匿名方法的简单语法糖,进而是linq,原来C#是这样进化的。而扩展方法再让C#编程函数化!
其实说到最后就是通过委托来松耦合各个代码块的关系,而再通过各种语法糖的封装来简单化这些东西,增强语音的重用性,再来个扩展方法增加重用性和扩展性。还有泛型不也是增加重用性么。
还有更细致的自动属性、自动参数、默认初始化等都是解放程序员的双手
《深入理解C#(第2版)》读后感(三):建议还是看英文版
翻译得太烂了,看中文要看两遍才能明白他想说什么,英文就能把前后文连贯起来。而且还能练练英语,就是看英文速度比较慢,不过只要看一遍其实也差不多,不明白为什么这本书的中文版评分还这么高?
原著还是不错的,从语言进化的脉络来讲述,让你明白不同版本C# feature产生的缘由,用来解决什么问题。另外可以配合这本书一起看,编写高质量代码 http://book.douban.com/subject/6849791/。
《深入理解C#(第2版)》读后感(四):《深入理解C#(第2版)》,值得拥有。
《深入理解C#(第2版)》,个人觉得是一本完全被低估的.net书,是一本需要和《CLR via C#(第3版)》同时放在案头的.net书(因为两本书有不同的方向,读一本不全,只有同时读两本,才能够互为补充)!
《深入理解C#》一书是世界资深技术卖家C# MVP Jon Skeet“十年磨一剑”之经典之作,是.net爱好者提升C#编程功力的首选,该书的内容非常实用,C#诸多版本的特性,从C#1.0到4.0,作者不是简单地罗列出来,而是阐述每一项特性的发展史,让我们知其然知其所以然。该书对C#的核心特性,如类型系统、值类型和引用类型、泛型、委托、动态类型和LINQ等内容作了详细的描述。“站在巨人的肩膀上”,我们可以看得更远。
谢谢人民出版社图灵公司引进出版了这么好的一本.net书,[email protected]/* */ @图灵教育 @图灵社区 @图灵谢工 。
《深入理解C#(第2版)》读后感(五):一本值得所有开发人员看看的书
先说.NET开发人员,我认为本书和CLR via C#是两本.NET程序员必读的书,这两本书有着不同的倾向。
CLR via C#更加倾向于来用C#剖析CLR的原理和行为,而本书相对来说更加实用,把C#1.0到4.0中“先进”的特性婉婉道来,更关键的是,这本书不仅仅是简单地罗列C#中每一项特性,而是会阐述每一项特性的发展史。我们知道,需求是发展的最大动力,那么我们从这本书可以很清楚地看到,微软是怎么样一步步地提高.NET程序员的生产力,怎么样让语法变得越来越优雅,怎么样越来越容易上手。C#3.0的LINQ是创举,我们在社区中体会到了万物皆为LINQ的神奇,而在我看来C#4.0的并行库更是把并行编程封装得几乎完全傻瓜化了。
大概在两年前,我就一直在致力于提倡语义化编程,当编程语言发展到完善程度的时候,一个产品工程师不需要了解任何语言的内在细节,只需要像平时说话一样来写代码,然后点下运行,喝一杯茶,看着产品发布。当然,需要做到这一点还有很长的路要走,微软的天才架构师们当然也会认识到这一点,那他们要做的第一步,也是很多编程语言都致力于的方向,就是尽力去降低“产品工程师们”的门槛,让他们更多关注业务逻辑,从而把“计算机科学”和“软件工程”这两门学科彻底分开。
说到这里,顺便说一个被扯了好多年的话题:“数学到底是不是程序员的必备学科”。在我看来并不是。有这么一种观点说,我们可以把程序员分成建筑学家和数学家,那么产品工程师-->产品架构师的职位应该是建筑学家。那么建筑学家该做的事儿是什么?是设计一套完善的架构,定制一套属于自己产品的设计模式的组装。但是话又说回来,我一直说,设计模式的产生其实是为了弥补面向对象语言天生的不足,那么当语言彻底“完善”之后,设计模式其实可以逐渐被舍弃掉,那么作为产品工程师和产品架构师,我觉得其实必备的技能是“会用最直接的语言说话”,其实也就是,怎么样把产品的逻辑说清楚,这也是我认为产品工程师所需的最基本素养,没有之一。
说了这么多题外话,回到这本书,我之前说这是一本.NET程序员所必读的书,可是我题目说的是“值得所有开发人员看看的书”,没错。在我看来,C#实在是当今所有语言中发展最迅猛的语言,做Java程序员的乐趣是用成熟的框架解决各种各样的业务问题,做Python程序员的乐趣是用简短漂亮的代码来写下一个个函数和模块,而作为一个.NET程序员最大的乐趣就莫过于跟着微软的步伐一步步地体验那些酷炫的语法特性,从委托,事件,匿名方法到之后的LINQ,dynamic,并行库还有声明式编程。再到5.0可能会提出的“编译即服务”的概念。然后感觉到,原来代码还可以这么写。那么作为一个其他语言的程序员,即使不想依附于Windows这个平台,但是学一学C#的语法特性,然后当我们在写着其他代码的时候,然后脑子转一下,想到,其实C#可以这么写非常简单,然后再来考虑本语言是否有这样的方式来实现这样的问题。岂不妙哉!
但是,不得不说的一点是,作为译作,这本书的翻译我觉得不是足够流畅,有的话我确实需要关掉音乐,静下心来大声读两三遍才能读懂,但是,相对于我看英文的龟速而言,这个的性价比也是足够高的。这也是我给本书四星而并非五星的理由。
还是引用我之前第一章说的话,有人说C#就像.NET程序员的初恋情人,即使有那么一天,你在其他平台的身体上折腾来折腾去,但是你依旧不会忘记,并且愿意时常幻想,曾经.NET带给我们的美妙感觉。
《深入理解C#(第2版)》读后感(六):c#学习,主要和java对比
c#学习
1,namespace,using不如package,import。命名空间别名,::,global::,alias,这些干啥呢,为了一点点的灵活性一个补丁接着一个。 java的ide让文件路径和package名称对应,简化了程序员的工作,不用选择了,package不能用相对路径访问子package单元。c#的这种灵活性我觉得没必要。
2,string,String2种写法,我有选择焦虑症
3,partial是好东西,为生成代码而生。对静态语言来说生成代码简直是标配。这个感觉非常好,因为基本上目的明确,你明确声明这个为partial。不怕这种灵活性。
但感觉扩展函数有点过了,估计主要是c#3为引入linq准备的机制,用来实现写dsl很酷,但易被滥用。
java8也加入default methods,来方便引入类似linq的stream。但java8是不允许放到不同文件里的啊
c#的扩展函数可以放到任意文件里,这个灵活性有点吓人。
4,访问级别默认private比java的默认package好。
5,static class不错,scala用object。java中没有对应的。但内嵌class不包含外部对象引用会不会不方便?
6,yield return搞迭代器不错,跟python迭代器一样了,很酷
7,值对象,又一个选择焦虑,这个对象不大,但用struct还是class呢?struct提供的那一点locality性能优势和复制劣势如何取舍?
truct A
{
rivate int a;
ublic A(int i) : this()
{
a = i;
}
}
可以直接A a;struct默认会有个无参构造函数,也就是说没有immutable的struct。初见也有点出人意料。真的有必要要struct吗?
8,property,不用生成getter,setter。简洁不少,最常用的估计是{get; private set;},就是set时占用了个value关键词。
9,delegate,本来要2个名字现在只要一个。java中的interface Runnable { void run() },变成了Action。本质上都是在模仿函数式编程中的函数,通过只有一个方法的接口来模拟高阶函数。
delegate少了个名字但引入了个新的概念和关键词。感觉亏了。不如java。
后来也都引入了lambda表达式。结合type inference。综合了lisp,schema这些函数语言的能力和静态类型的编译时检查。
10,event,a调用b,a依赖于b,能b依赖于a吗?依赖倒置对模块化设计来说很关键,订阅发布模式。event提供了语言级支持。结合lambda和method reference(java这么叫的),用这个写ui程序很爽。我觉得这个值得引入这个概念和占用一个关键词。
11,对象和集合的初始化,在需要常量集合,builder模式时挺有用的,并且还可以嵌套初始化,最后的数据格式挺漂亮,类似带类型信息的json。c# object notation。跟匿名类型格式有一样。
12,Nullable
13,Linq语法。这个为什么??我实在不懂,为了跟sql类似搞个这种东西出来,那种流式(链式)api不是挺爽吗?
14,可选参数,命名实参。java选择了不予支持,支持可选参数能省掉几个构造函数,但可能会引诱人写出比需求更多的构造接口。命名实参让形参的名字也关键起来了,java用builder模式部分解决这个问题,但有还是要好的。
15,enum只能数值,这个太狭隘了吧。不如java的enum。java enum就是instance数量限定的类。singlton模式用enum实现