C#本质论第四版-1,抄书才能看下去,否则两三眼就看完了,一摞书都成了摆设。抄下了记忆更深入java
本书面向的读者c++
写做本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用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的出现,一些最重要的加强包括:api
隐式类型的变量数组
扩展方法安全
分部方法多线程
匿名类型
泛型
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#的一些特殊主体及其内部工做原理的时候,本书也是一本出色的参考书。