C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻
C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻
本书面向的读者
写作本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用assembly、link、chain、thread和fusion等字眼而打击初学者的信心,否则许多人会误以为这是一本讲冶金而不是程序设计的书,本书主要读者是已经有一定变成经验,并想多学一种语言“傍身”的开发者,但我还是忍住编排了本书的内容,以便使各种层次的开发者能够从中获益。
初学者;假如你是变成新手,本书将帮助你从入门程序员度过成为C#开发者,消除以后在面临任何C# 编程任务时的害怕心理。本书不仅要教会你语法,还要教你养成良好的编程习惯,为将来的编程生涯打下良好的基础。
熟悉结构化编程的程序员,学习外语的最好的方法就是沉浸法,类似的,学习一门计算机语言最好的方法就是在动手中学习,而不是等熟知了它的所有理论之后再动手,基于这个前提,本书最开始的内容是应该可以开始写基本的控制流程程序。然而,要成为真正的C#开发者,记住语法只是第一步,为了从简答程序过度到企业级咖啡,C#开发者必须熟练地从兑奖及其关系的角度来思考问题,为此,第五章的初学者主题,开始介绍类和面向对象的开发。对于C、cobol和fortran等结构化的编程语言,虽然它们扔在发挥作用,但作用会越来越小,所以,软件工程师们应该逐渐开始了解面向对象开发,C#是进行这一思维模式转变的理想语言,因为它本来就是基于面向对象开发,这一种心思想来设计的。
熟悉基于对象和面向对象理念的开发者,C++和java程序员以及许多经验的vb程序员都可归于此类,对于分号和大括号,他们可是一点都不陌生,简答浏览一下第一张的代码,你会发现,从核心上讲,C#类似于你熟知的C和C++风格的语言。
C# 专家,对于以及ing精通C#的人,本书可供你参考不太常见的语法,此外,对于其他地方强调较少的一些语言细节以及微妙之处,我提出了自己的见解,最重要的是,本书提供了编写可靠和易维护代码的贵伐及模式,你教别人学C#时,本书也颇有助益,随着C#3.0、C#4.0和C#5.0的出现,一些最重要的增强包括:
隐式类型的变量
扩展方法
分部方法
匿名类型
泛型
Lambda语句和表达式
表达式树
标准查询操作符
查询表达式
动态编程
用任务编程库和async进行多线程编程
用plinq进行并行查询处理
并发集合
考虑到许多人还不熟悉这些主题,因此本书围绕他们展开了详细的讨论,设计高级C#开发的还有指针这一主题,该主题将在地21章讨论,就算是有经验的C#开发者,也未必能很透彻地理解这一主题。
本书特色
本书是一本语言参考书,它村讯核心C#5.0语言规范。为了帮助读者理解各种C#构造,书中用了大量例子演示了每一种特性,而且为每个概念都提供了相应的规范和最佳实践,以确保代码能顺利编译、避免留下隐患,并获得最佳的可维护性。
为了增强可读性,所有代码军进行了特殊格式处理,而且每一章的内容都是用思维导图来概括。
C#编码规范
本书新版本最重大的改进之一就是增加了大量编码规范,例如地16章中的一个规范如下所示:
规范:
要确保相等的对象有相同的散列码
要确保对象的散列码在一个散列表中永不变化。
要去报散列算法跨省产生良好分布的散列码
要去报散列算法在任何可能的对象撞他中健壮性。
一名知道语法的程序员和一名能因时宜地地写出最搞笑代码的专家的区别,关键就是这写编码的规范。专拣不仅让代码通过编译,还遵循最佳时间,降低产生bug的概率,并使用代码的维护变得更容易,编码规范强调了一些关键原则,开发时务必注意。
代码示例
本书大多数代码都能在公共语言基础结构的任何实现上运行,其中包括mono、rotor和microsoft.net平台。除了在解释之和摩羯平台有关的重要概念的地方,我很少使用平台或厂商特有的库。
下面是一个示例代码清单。
Clanss MiracleMax
{
Static void Main()
{
string max:;
Max = “Have fun storming the castle!”;
System.Console.WriteLine(max);
}
}
下面简答介绍一下代码格式
注释以斜体表示
关键字加粗
有点代码被突出显示,是为了指明这些代码与之前列出的有所区别,或是为了演示政委中介绍的概念
突出显示的内容可能是一整行,也可能仅仅是一行中的几个字符
不完整的程序清单包含一个省略号,表示无关的代码已省略
在代码清单之后,列出了对应控制台输出,如下例所示:
执行程序时要由用户输入的内容加粗显示。
虽然提供完整的代码示例可以方便地复制到自己的程序中,但这样做回降低学习特定主题的意义,因此需要自行修改代码示例,然后再把它们集成到自己的程序中。代码示例中最大的文帝是省略了像异常处理这样的错误检查,此外,书中的代码示例没有显示地包含using system语句,在所有的例子中这个语句都是必须的。
思维导图
每章开头都是一副思维导图,作为提纲,它的作用是为读者提供对每章内容的快速参考,下面是一个例子
每一章的主题显示在思维导图的中心,高级主题围绕中心展开,利用思维导图,读者可以方便地搭建自己的知识体系,可以从一个主题出发,更清楚地理解其周边的各个具体概念,避免中途纠缠于一些不相干的枝节问题。
分裂解说,根据自己的经验水平,书中特殊的代码块和页面边缘的灰色竖线条可以变公主你轻松地找到适合自己的内容。
初学者主题:特比针对入门级程序员提供定义或解释:
高级主题:可以让有经验的开发者将注意力放在他们最关心的内容上。
标注: 用标注框来强调关键原则,是读者对其重要性一目了然。
语言对比:分散在正文中的补充内容,描述了C#和气体语言的关键差异,为熟悉气体语言的读者提供指引。
本书内容组织
总地说来,软件工程宗旨就是对复杂性进行管理。本书正式基于这个宗旨来组织内容的。第1章~第4章介绍的是结构会变成,学习了这些内容后,你可立即开始写一些功能简单的代码。第5章~第9章介绍了C#的面向对象构造,新手应在完全理解了这几章的内容之后,再开始接触本书其余部分更高级的主题。第11章~地13章介绍了更多用于降低发展性的构造,讲解了当今几乎所有程序都要用到的通用设计模式。在理解了它们之后,你可以更加轻松地理解如何通过反射和特性来实现动态变成。在后续的章节中,将广泛运用反射和特性来实现线程处理和互操作性。
本书最后专门用一张来讲出cli。这一张针对开发平台对C#语言进行描述。之所以反倒最后。是因为它并不是C#特有的,而且不会涉及语法和编程风格问题,不过,本章适合在任何时候阅读,或许最恰当的时机是在越多了第一章之后。
下面是每一章的内容提要(使用黑体的章号表明那一章的内容表明那一章的内容在C#3.0~5.0版本中都有。
第一章, C#概述:这一章在展示了用C#编写的helloworld程序只有,进一步剖析了C#。这应当能使读者熟悉C#程序的外观和感觉。 这一章提供了让读者编译和调试自己的程序所需的足够多的细节,此外,还简单描述了执行C#程序的上下文及其中间语言。
第二章, 数据类型:任何用的程序都要处理数据,这一章姐扫了C#的两种基本数据类型,即值类型和引用类型,另外还讨论了类型间的转换以及C# 对数组的支持。
第三章, 操作符和控制流,让计算机擅长重复性操作,为了利用计算机的这个能力,需要知道如何在自己程序中添加循环和条件逻辑。这一章还讨论了C#操作符数据转换以及预处理指令。
第四章, 方法和参数,这一章研究了有关方法及其参数的细节,其中包括通过参数来传值、传引用和返回数据。C#4.0添加了对默认参数的支持,本章解释了如何使用它们。
第五章, 类:前面已经学过了类的基本构成元素,这一章将这些构造合并到一起,从而获得具有完整功能的类型。类是面向对象的类型。类是面向对象技术的核心,它为一类对象定义了模板。
第六章, 集成,虽然集成是许多开发者的基本编程手段,但C#提供了独特的构造比如new修饰符。这一章讨论了继承语法的细节,其中包括重写。
第七章, 接口,这一章战略如何利用接口来定义类之间的可以进行版本控制的交互契约,C#同时包含显示和隐式的接口成员实现,可以实现一个额外的封装等级,这是其他大多数语言所不支持的。
第八章, 值类型,尽管不如应用类型那么流行,但有些情感下仍然有必要定义行、为类似于C#内置基本类型的值类型。这一章要介绍如何定义结构,同时揭示它们的特性。
第九章, 合式类型,这一章讨论了一些更高级的类型定义,解释了如何实现操作符,比如“+”和转型操作发,并描述了如何将多个类封装到一个库中,除此之外,这一章还演示了如何定义命名空间和xml注释,并讨论了如何基于垃圾回收机制来设计令人满意的类。
第十章, 异常处理,这一章对第4章引入的一场处理机制的一个延伸讨论,描述了如何利用异常层次结构来创建自定义异常。此外,它还强调了一场处理的一些最佳实践。
第十一章, 泛型,从某种意义上说,反省或许是C#1.0缺少的一个重要的特性。这一章全面讨论了自2.0引入的这个特性,除此之外,C#4.0增加了对协变和逆变的支持。本章将在泛型的背景中探讨它们。
第十二章, 委托和lanmbda表达式:正式因为委托,才使C#与其前身语言c和c++等有了显著的不同,它定义了在代码中处理时间的模式。这几乎万川消除了写轮训例程的必要。Lanmbda表达式是在委托的基础上构建起来的,它提供了比委托更加优雅和简洁的语法。本章的内容是滴14章讨论的心的集合api基础。
第十三章, 事件,封装起来的委托称为事件,是公共语言运行时的核心构造,本章还探讨了匿名方法,这也是C#2.0新增的。
第十四章, 支持标准查询操作符的集合接口,我们通过讨论新的enumerable类的扩展方法,想你介绍了C#3.0引用的一些见到但又非常强大的改变,enumeralbe泪使一个全新的集合api成为可能,这个啊皮成为标准查询操作符,本章对它进行了详细讨论。
第十五章, 使用查询表达式的linq:如果只使用标准查询操作符,就会形成让你难以辨认的长语句,然而,查询表达式提供了一种类似SQL风格的语法,能够有效地解决这个问题,这一章会详细条囵这种表达式。
第十六章, 构建自定义集合,在构建用于操纵业务对象的自定义api时,经常都需要创建自定义的集合,本章讨论具体如何做,同时,还介绍了能使自定义集合的构建变得更简单的上下文关键字。
第十七章, 反射、特性和动态变成;20世纪80年代末,程序结构的思维模式发生了根本性的变化,面向对象的变成是这个变化的基础。类似地,特性使说明性变成和嵌入元数据成为了可能,因而引入了一种新的思维模式。这一章讨论了特性的方方面面,并讨论了如何通过反射机制来获取它们,这一章还讨论了如何通过基类库中序列化框架来实现文件的输入输出。C#4.0增加一个新的的关键字,即dynamic,该关键字将所有类型检查都移至运行时进行,因而极大扩展了C#能做的事情。
第十八章, 多线程处理,大多数现代的程序都要求使用线程来执行长时间运行的任务,还要确保对并发的事件进行快速响应,随着程序变得越来越复杂,必须采取其他措施来保护浙西高级环境中的数据。多线程应用程序的编写是一项复杂的任务。这一章讨论了如何操纵线程,并讲述了如何采取一些必要的措施来防止将多线程应用程序弄得一团糟。
第十九章, 线程同步,这一章以低18章为基础,演示了如何利用一些内建的县城处理模式来简化对县城代码的显式控制。
第二十章, 平台互操作性和不安全的代码:必须认识到的是,C#是相对年轻的一种语言,许多现有的代码是用其他语言写成的,为了用好这些现有的代码,C#通过p/invoke提供了对互操作性,非托管代码的调用的支持。除此之外,C#允许使用指针,也允许执行直接内存操作。虽然使用阵阵的代码要求特殊的权限才嗯那个运行,但它具有与C风格的api完全兼容的能力。
第二十一章, Cli,事实上,C#被设计成一种在CLI的顶部工作的最邮箱的编程语言,这一章讨论了C#程序与底层运行时及其规范的关系。
希望本书成为你学习和掌握C#集成的一个好帮手,灵位以后需要了解C#的一些特殊主体及其内部工作原理的时候,本书也是一本出色的参考书。