基本信息


编辑推荐
入门及进阶的进阶之作!涵盖C# 7.0
作者是知名C#专家,长期的微软MVP和Regional Directo
微软C#项目经理鼎力推荐
内容简介
计算机书籍
作为历年来深受各层次开发人员欢迎的C#权威指南,本书讨论了从C# 3.0到7.0的特性,强调了现代编程模式,可帮助读者编写简洁、强大、健壮、安全和易于维护的C#代码。知名C#专家Mark Michaelis对语言进行了深入的探讨,提供了对关键C# 7.0增强、C# 7.0和.NET Core/.NET Standard的配合使用以及跨平台编译的专业论述。
本书共22章。第1章是C#概述;第2章和第3章介绍C#中的数据类型;第4章讨论操作符和控制流;第5章探讨方法和参数;第6章讲解类,它是面向对象技术的核心;第7章介绍继承,其中包括继承语法的细节;第8章探讨接口;第9章和第10章分别介绍值类型和合式类型;第11章延伸讨论第5章引入的异常处理机制;第12章引入泛型;第13章讲解委托和Lambda表达式;第14章讨论事件;第15章介绍支持标准查询操作符的集合接口;第16章探讨使用查询表达式的LINQ;第17章讲解如何构建自定义集合;第18章介绍反射、特性和动态编程的方方面面;第19章涵盖多线程处理;第20章以第19章为基础,演示了线程同步的用法;第21章涵盖平台互操作性和不安全的代码;第22章讲解公共语言基础结构,并讨论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.1 Hello, World 2
1.2 C#语法基础 11
1.3 使用变量 20
1.4 控制台输入和输出 24
1.5 注释 28
1.6 托管执行和CLI 32
1.7 多个.NET框架 37
第2章 数据类型 43
2.1 基本数值类型 44
2.2 更多基本类型 53
2.3 null和void 67
2.4 数据类型转换 69
第3章 更多数据类型 77
3.1 类型的划分 77
3.2 可空修饰符 80
3.3 元组 83
3.4 数组 90
第4章 操作符和控制流程 109
4.1 操作符 110
前言
本书开始几章会指导你学习顺序编程结构。在这种编程结构中,语句按编写顺序执行。该结构的问题在于,随着需求的增加,复杂性也指数级增加。为降低复杂性,将代码块转变成方法,产生了结构化编程模型。在这种模型中,可以从一个程序中的多个位置调用同一个代码块,不需要复制。但即使有这种结构,程序还是会很快变得臃肿不堪,需进一步抽象。所以,在此基础上人们又提出了面向对象编程的概念,这将在第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章)
序言
2005年LINQ(语言集成查询,Language Integrated Query)公布时,我才刚加入微软公司,正好见证了PDC会议上令人激动的公开发布时刻。虽然我对技术本身几乎没有什么贡献,但它的宣传造势我可是全程参加了。那时人人都在谈论它,宣传小册子满天飞。那是C#和.NET的大日子,至今依然令人难忘。
但会场的实践实验室区域却相当安静,那儿的人可以按部就班地试验处于预览阶段的技术。我就是在那儿遇见Mark的。不用说,他一点儿都没有按部就班的意思。他在做自己的试验,梳理文档,和别人沟通,忙着鼓捣自己的东西。
作为C#社区的新人,我感觉自己在那次会议上见到了许多人。但老实说,当时太混乱了,我唯一记得清的就是Mark。因为当问他是否喜欢这个新技术时,他不像别人那样马上开始滔滔不绝,而是非常冷静地说:“还不确定,要自己搞一搞才知道。”他希望完整地理解并消化一种技术,之后才将自己的想法告知于人。
所以我们之间没像我本来设想的那样发生一次快餐式的对话。相反,我们的对话相当坦诚、颇有营养。像这样的交流好多年都没有过了。新技术的细节、造成的后果和存在的问题全都涉及了。对我们这些语言设计者而言,Mark是最有价值的社区成员。他非常聪明,善于打破砂锅问到底,能深刻理解一种技术对于真正的开发人员的影响。但是,最根本的原因可能还是他坦诚,他从不惧怕说出自己的想法。一样东西通过了Mark的测试,就没什么好担心的了!
这些特质也使Mark成为一名出色的作家。他的文字直指技术的本质,敏锐地指出技术的真正价值和问题,向读者提供最完整的信息且没有废话。没人能像这位大师一样帮你正确理解C# 7.0。
请好好享用本书!
—Mads Torgersen,微软公司C#项目经理
媒体评论
——Mads Torgersen,微软公司C# 项目经理