基本信息

编辑推荐
C#技术专家亲笔撰写,微软公司C#项目经理作序推荐
根据C# 7.0全更新,通过大量示例演示C#中的重要特性
内容简介
计算机书籍
作为历年来深受各层次开发人员欢迎的C#指南,本书讨论了从C# 3.0到C# 7.0中的C#特性,强调了现代编程模式,教你如何编写简洁、强大、健壮且易于维护的C#代码。
C#专家Mark Michaelis对C#语言进行了深入的探讨,提供了针对关键C# 7.0增强、C# 7.0和.NET Core/.NET Standard的配合使用以及跨平台编译的论述。他用简洁的例子阐释了关键C#构造,并提供了大量实践编程规范,为你进行软件开发打好基础。
本书特色
深挖C# 7.0的诸多改进,包括元组、解构函数、模式匹配、本地函数和ref返回等
利用C#面向对象构造写出更健壮的代码
利用泛型、委托、Lambda表达式和事件降低代码复杂度
利用C# 7.0跨平台编译在Linux或MacOS上运行代码
掌握多线程处理和同步,包括async/await模式
包括C# 7.1/7.2/7.3语言增强
作译者
Mark Michaelis是高端软件工程和咨询公司IntelliTect的创办者、首席技术架构师和培训师。Mark经常在开发者大会上发言,写过许多文章和书籍,目前是《MSDN Magazine》的《Essential .NET》专栏作家。
从1996年起,他一直是C#、Visual Studio Team System和Windows SDK的MVP。2007年被评选为微软的Regional Director。他还服务于微软的几个软件设计评审团队,包括C#和VSTS。
Mark拥有伊利诺伊大学哲学专业文学学士学位和伊利诺伊理工大学计算机硕士学位。
他不是痴迷于计算机,就是忙于陪伴家人或者玩壁球(2016年暂停铁人三项训练)。他居住在华盛顿州的斯波坎,他和妻子Elisabeth有三个孩子:Benjamin、Hanna和Abigail。
技术编辑简介
Eric Lippert目前在Facebook负责开发者工具。之前是微软C#语言设计团队的一员。不在StackOverflow上回答用户的C#问题或者编辑程序书时,他总是喜欢玩他的小帆船。目前和妻子Leah居住在华盛顿州的西雅图。
目录
推荐序
前言
致谢
作者简介
第1章 C#概述 / 1
1.1 Hello, World / 1
1.2 C#语法基础 / 8
1.3 使用变量 / 14
1.4 控制台输入和输出 / 17
1.5 注释 / 20
1.6 托管执行和CLI / 22
1.7 多个.NET框架 / 26
1.8 小结 / 28
第2章 数据类型 / 29
2.1 基本数值类型 / 29
2.2 更多基本类型 / 36
2.3 null和void / 46
2.4 数据类型转换 / 47
2.5 小结 / 52
译者序
Mark是一个很实在的人。作为运动健将(铁人三项)和技术专家,他深挖事物本质的能力令人惊叹。从表至里,对任何问题他都能做到不仅知其然,还知其所以然。反映在本书中,就是种种知识点有机地联系在一起。最开始不明白的问题,一气呵成读下去会有恍然大悟的感觉。正如本书推荐序作者微软公司C#项目经理Mads Torgersen所说:“一样东西通过了Mark的测试,就没什么好担心的了!”
这本书其实完成了一项非常困难的任务。前面的章节很易于刚入门的开发者理解,而在后面的章节中,作者毫不藏私地将自己对语言的理解倾囊以授,并为有经验的开发者提供了发挥C# 7.0最大潜力所需的详细信息。Mark是组织内容的高手。从第1章起,即使读者中有许多高手,Mark也成功赢得了他们的心。与此同时,全书的所有内容都通俗易懂,没有废话。
这一版是历史上改动最大的一版。针对C# 7.0的新特性,内容编排有了很大变化。感谢框架和语言的进步,以前实现起来比较烦琐的代码现在变简洁了。当然结果就是全书几乎所有代码和相关内容都要重新设计。作为译者,加上错过了上一版,我面对的基本是一本全新的书。
说到本书源代码,不得不说这一版的提供方式是最完美的。本书在GitHub上有专门的项目(https://github.com/IntelliTect/EssentialCSharp),读者可随时下载最新代码并在Visual Studio 2017或更高版本中打开。
感谢作者Mark Michaelis,他是一位极具激情和活力的技术专家。翻译过程中,他热情、耐心地解释了我提出的问题,并虚心、坦诚地采纳了我提出的修改意见。另外,还要感谢编辑关敏,感谢她对我的宽容、耐心和支持。最后要感谢我的家人,尤其是女儿周子衿,她总能从一些新奇的角度帮我重新认识这个世界。
衷心祝愿读者朋友能通过本书,开始愉快而激动人心的C#之旅!
周靖,2019年3月
前言
本书开始几章会指导你学习顺序编程结构。在这种编程结构中,语句按编写顺序执行。该结构的问题在于,随着需求的增加,复杂性也指数级增加。为降低复杂性,将代码块转变成方法,产生了结构化编程模型。在这种模型中,可以从一个程序中的多个位置调用同一个代码块,不需要复制。但即使有这种结构,程序还是会很快变得臃肿不堪,需进一步抽象。所以,在此基础上人们又提出了面向对象编程的概念,这将在第6章开始讨论。在此之后,你将继续学习其他编程方法,比如基于接口的编程和LINQ(以及它促使集合API发生的改变),并最终学习通过特性(attribute)进行初级的声明性编程(第18章)。
本书有以下三个主要职能。
全面讲述C#语言,其内容已远远超过了一本简单的教程,为你进行高效率软件开发打下坚实基础。
对于已熟悉C#的读者,本书探讨了一些较为复杂的编程思想,并深入讨论了语言最新版本(C# 7.0和.NET Framework 4.7/.NET Core 2.0)的新功能。
它是你永远的案头参考—即便在你精通了这种语言之后。
成功学习C#的关键在于,要尽可能快地开始编程。不要等自己成为一名理论“专家”之后才开始写代码。所以不要犹豫,马上开始写程序吧。作为迭代开发思想的追随者,我希望即使一名刚开始学习编程的新手,在第2章结束时也能动手写基本的C#代码。
许多主题本书没有讨论。你在本书中找不到ASP.NET、ADO.NET、Xamarin、智能客户端开发以及分布式编程等主题。虽然这些主题与.NET有关,但它们都值得用专门的书分专题讲述。幸好市面上已经有丰富的图书供读者选择。本书重点在于C#及基类库中的类型。读完本书之后,你在上述任何领域继续深入学习都会有游刃有余的感觉。
本书面向的读者
写作本书时,我面临的一个挑战是如何在持续吸引高级开发人员眼球的同时,不因使用assembly、link、chain、thread和fusion等字眼而打击初学者的信心,否则许多人会以为这是一本讲冶金而不是程序设计的书。本书的主要读者是已经有一定编程经验,并想多学一种语言来“傍身”的开发者。但我还是小心地编排了本书的内容,使之对各种层次的开发者都有足够大的价值。
初学者:假如你是编程新手,本书将帮助你从入门级程序员过渡为C#开发者,消除以后在面临任何C#编程任务时的害怕心理。本书不仅要教会你语法,还要教你养成良好的编程习惯,为将来的编程生涯打下良好基础。
熟悉结构化编程的程序员:学习外语最好的方法就是“沉浸法”。类似地,学习一门计算机语言最好的方法就是在动手中学习,而不是等熟知了它的所有“理论”之后再动手。基于这个前提,本书最开始的内容是那些熟悉结构化编程的开发者很容易上手的。到第5章结束时,这些开发者应该可以开始写基本的控制流程序。然而,要成为真正的C#开发者,记住语法只是第一步。为了从简单程序过渡到企业级开发,C#开发者必须熟练从对象及其关系的角度来思考问题。为此,第6章的“初学者主题”开始介绍类和面向对象开发。历史上的C、COBOL和FORTRAN等结构化编程语言虽然仍在发挥作用,但作用会越来越小,所以,软件工程师们应该逐渐开始了解面向对象开发。C#是进行这一思维模式转变的理想语言,因为它本来就是基于“面向对象开发”这一中心思想来设计的。
熟悉“基于对象”和“面向对象”理念的开发者:C++、Python、TypeScript、Visual Basic和Java程序员都可归于此类。对于分号和大括号,他们可是一点儿都不陌生!简单浏览一下第1章的代码,你会发现,从核心上讲,C#类似于你熟知的C和C++风格的语言。
C#专家:对于已经精通C#的读者,本书可供你参考不太常见的语法。此外,对于在其他地方强调较少的一些语言细节以及微妙之处,我提出了自己的见解。最重要的是,本书提供了编写可靠和易维护代码的指导原则及模式。在你教别人学C#时,本书也颇有助益。从C# 3.0到C# 7.0最重要的一些增强包括:
字符串插值(第2章)
隐式类型的变量(第3章)
元组(第3章)
模式匹配(第4章)
扩展方法(第6章)
分部方法(第6章)
序言
本书是C#最权威、最值得尊重的参考书之一,作者为此付出了非凡的努力!Mark Michaelis的《Essential C#》系列多年来一直是畅销经典。而我刚认识Mark的时候,这本书还处于萌芽阶段。
2005年LINQ(语言集成查询,Language Integrated Query)公布时,我才刚加入微软公司,正好见证了PDC会议上令人激动的公开发布时刻。虽然我对技术本身几乎没有什么贡献,但它的宣传造势我可是全程参加了。那时人人都在谈论它,宣传小册子满天飞。那是C#和.NET的大日子,至今依然令人难忘。
但会场的实践实验室区域却相当安静,那儿的人可以按部就班地试验处于预览阶段的技术。我就是在那儿遇见Mark的。不用说,他一点儿都没有按部就班的意思。他在做自己的试验,梳理文档,和别人沟通,忙着鼓捣自己的东西。
作为C#社区的新人,我感觉自己在那次会议上见到了许多人。但老实说,当时太混乱了,我唯一记得清的就是Mark。因为当问他是否喜欢这个新技术时,他不像别人那样马上开始滔滔不绝,而是非常冷静地说:“还不确定,要自己搞一搞才知道。”他希望完整地理解并消化一种技术,之后才将自己的想法告知于人。
所以我们之间没像我本来设想的那样发生一次快餐式的对话。相反,我们的对话相当坦诚、颇有营养。像这样的交流好多年都没有过了。新技术的细节、造成的后果和存在的问题全都涉及了。对我们这些语言设计者而言,Mark是最有价值的社区成员。他非常聪明,善于打破砂锅问到底,能深刻理解一种技术对于真正的开发人员的影响。但是,最根本的原因可能还是他的坦诚,他从不惧怕说出自己的想法。一样东西通过了Mark的测试,就没什么好担心的了!
这些特质也使Mark成为一名出色的作家。他的文字直指技术的本质,敏锐地指出技术的真正价值和问题,向读者提供最完整的信息且没有废话。没人能像这位大师一样帮你正确理解C# 7.0。
请好好享用本书!
Mads Torgersen,微软公司C#项目经理
媒体评论
—— Mads Torgersen,微软公司C# 项目经理