前 言
C#是Microsoft于2000年7月推出.NET Framework的第1版时提供的一种全新语言。C#从那时起迅速流行开来,成为使用.NET Framework的桌面、Web、云和跨平台开发人员无可争议的选择。他们喜欢C#的一个原因是其继承自C/C++的简洁明了的语法,这种语法简化了以前给程序员带来困扰的一些问题。尽管做了这些简化,但C#仍保持了C++原有的功能,所以现在没理由不从C++转向C#。C#语言并不难,也非常适合开发人员学习基本编程技术。易于学习,再加上.NET Framework的功能,使C#成为开始你编程生涯的绝佳方式。
C#的最新版本C# 7是.NET Framework 4.7的一部分,它建立在已有的成功基础之上,还添加了一些更吸引人的功能。Visual Studio的最新版本Visual Studio 2017和开发工具的Visual Studio Code 2017系列也有许多变化和改进,这大大简化了编程工作,显著提高了效率。
《C#入门经典(第8版)》将全面介绍C#编程的所有知识,从该语言本身一直到桌面编程、云编程和跨平台编程,再到数据源的使用,最后是一些新的高级技术。我们还将学习Visual Studio 2017的功能和利用它开发应用程序的各种方式。
《C#入门经典(第8版)》文笔优美流畅,阐述清晰,每一章都以前面章节的内容为基础,便于读者掌握高级技术。每个概念都会根据需要来介绍和讨论,而不会突然冒出某个技术术语来妨碍读者的阅读和理解。《C#入门经典(第8版)》尽量减少使用的技术术语数量,但如有必要,将根据上下文进行正确的定义和布置。
《C#入门经典(第8版)》作者都是各自领域的专家,都是C#语言和.NET Framework的爱好者,没人比他们更有资格讲授C#了,他们将在你掌握从基本原理到高级技术的过程中为你保驾护航。除基础知识外,《C#入门经典(第8版)》还有许多有益的提示、练习、完全成熟的示例代码(可从www.wrox.com和https://github.com/benperk/BeginningCSharp7下载),在你的职业生涯中一定会反复用到它们。
《C#入门经典(第8版)》将毫无保留地传授这些知识,希望读者能通过阅读《C#入门经典(第8版)》成为最优秀的程序员。
0.1 《C#入门经典(第8版)》读者对象
《C#入门经典(第8版)》面向想学习如何使用.NET Framework编写C#程序的所有人。《C#入门经典(第8版)》针对的是想要通过学习一种干净、现代、优雅的编程语言来掌握程序设计的完完全全的初学者。但是,对于熟悉其他编程语言、想要探索.NET平台的读者,以及想要了解.NET使用的旗舰语言的.NET开发人员,《C#入门经典(第8版)》同样很有价值。
0.2 《C#入门经典(第8版)》内容
《C#入门经典(第8版)》前面的章节介绍C#语言本身,读者不需要具备任何编程经验。以前对其他语言有一定了解的开发人员,会觉得这些章节的内容非常熟悉。C#语法的许多方面都与其他语言相同,许多结构对所有的编程语言来说都是相通的(例如,循环和分支结构)。但是,即使是有经验的程序员也可以通过这些章节理解此类技术应用于C#的特征,从而从中获益。
如果读者是编程新手,就应从头开始学习,了解基本的编程概念,并熟悉C#和支持C#的.NET平台。如果读者对.NET Framework比较陌生,但知道如何编程,就应阅读第1章,然后快速跳读后面几章,这样就能掌握C#语言的应用方式了。如果读者知道如何编程,但以前从未接触过面向对象的编程语言,就应从第8章开始阅读。
如果读者对C#语言比较了解,就可以集中精力学习那些详细论述最新.NET Framework和C#语言开发的章节,尤其是集合、泛型和C#语言新增内容的相关章节(第11章和第12章)。
《C#入门经典(第8版)》章节的编排方式可以达到两个目的:可以按顺序阅读这些章节,将其视为C#语言的一个完整教程;还可以按照需要深入学习这些章节,将其作为一本参考资料。
除核心内容外,从第3章开始,大多数章节的末尾还包含一组习题,完成这些习题有助于读者理解所学的内容。习题包括简单的选择题、判断题以及需要修改或创建应用程序的较难问题。附录中给出了全部习题的答案。这些习题也可以通过《C#入门经典(第8版)》的配套网站www.wrox.com下载,它们是wrox.com代码下载的一部分。
《C#入门经典(第8版)》特别注重与C# 7、.NET 4.7的一致性。对每一章都进行了彻底的检查,删掉了不太相关的内容,增加了新内容。所有代码都在最新版本的开发工具上进行了测试,所有屏幕截图都在Windows 10上重新截取,以提供最新的窗口和对话框。
《C#入门经典(第8版)》的亮点包括:
● 增加并改进了代码示例。
● 涵盖C# 7和.NET 4.7的所有新内容。
● 增加了编写跨平台运行的.NET Core和ASP.NET Core应用程序的示例。
● 增加了编写云应用程序的示例,并使用Azure SDK创建和访问云资源。
0.3 《C#入门经典(第8版)》结构
《C#入门经典(第8版)》分为6大部分。
● 前言:概述《C#入门经典(第8版)》的内容。
● C#语言:介绍C#语言的所有内容,从基础知识到面向对象的技术,一应俱全。
● Windows编程:介绍如何用WPF库编写和部署桌面应用程序。
● 云和跨平台编程:描述云和跨平台应用程序的开发和部署,包括Web API的创建和使用。
● 数据访问:介绍如何在应用程序中使用数据,包括存储在硬盘文件中的数据、以XML格式存储的数据和数据库中的数据。
● 其他技术:讲述使用C#和.NET Framework的一些额外方式,包括WCF和通用Windows应用程序。
下面介绍《C#入门经典(第8版)》5个重要部分中的章节。
0.3.1 C#语言(第1~13章)
第1章介绍C#及其与.NET的关系,了解在这个环境下编程的基础知识,以及Visual Studio 2017与它的关系。
第2章开始介绍如何编写C#应用程序,学习C#的语法,并将C#和示例命令行、Windows应用程序结合起来使用。这些示例将说明如何快速轻松地启动和运行C#,并附带介绍Visual Studio开发环境以及《C#入门经典(第8版)》将要使用的基本窗口和工具。
接着将学习C#语言的基础知识。第3章介绍变量的含义以及如何操纵它们。第4章将用流程控制(循环和分支)改进应用程序的结构,第5章介绍一些更高级的变量类型,如数组。第6章开始以函数形式封装代码,这样就更易于执行重复操作,使代码更容易让人理解。
从第7章开始将运用C#语言的基础知识,调试应用程序。这包括在运行应用程序时输出跟踪信息,使用Visual Studio查找错误,在强大的调试环境中找出解决问题的办法。
第8章将学习面向对象编程(Object-Oriented Programming,OOP)。首先了解这个术语的含义,回答“什么是对象?”OOP初看起来是较难的问题。我们将用一整章的篇幅来介绍它,解释对象的强大之处。直到该章的最后才会真正使用C#代码。
第9章将理论知识应用于实践,当开始在C#应用程序中使用OOP时,这才体现出C#的真正威力。在第9章介绍如何定义类和接口之后,第10章将探讨类成员(包括字段、属性和方法),在这一章的最后将开始创建一个扑克牌游戏,这个游戏将在后续章节中逐步开发完成,它非常有助于理解OOP。
学习了OOP在C#中的工作原理后,第11章将介绍几种常见的OOP场景,包括处理对象集合、比较和转换对象。第12章讨论.NET 2.0中引入的一个非常有用的C#特性—— 泛型,利用它可以创建非常灵活的类。第13章通过一些其他技术(主要是事件,它在Windows编程中非常重要)继续讨论C#语言和OOP。最后介绍C# 3.0/4/5/6版本中引入的新特性。
0.3.2 Windows编程(第14章和第15章)
第14章开始介绍Windows编程的概念,理解在Visual Studio中如何实现Windows编程。该章主要关注如何使用WPF以图形化方式构建桌面应用程序,以及用最少的时间和精力创建高级桌面应用程序。你将首先学习WPF编程的基础知识,然后在该章和第15章逐渐拓展相关知识。第15章演示在应用程序中如何使用.NET Framework提供的丰富控件。
0.3.3 云和跨平台编程(第16~19章)
第16章首先描述云编程,再讨论云优化堆栈。云环境不同于传统的程序编码方式,所以讨论、定义了几个云编程模式。为完成这一章,需要一个免费的Azure账户,以便创建一个App Services Web App,然后使用Azure SDK和C#,在ASP.NET 4.7 Web应用程序中创建和访问存储账户。
第17章将学习如何创建ASP.NET Web API,并部署到云中,然后在类似的ASP.NET 4.7 Web应用程序中使用Web API。这一章最后讨论云中两个最有价值的特性:硬件资源的缩放和最优利用方式。
第18章将介绍.NET Standard 和 .NET Core,这两个工具可用于任何应用程序类型,例如WPF、Windows和ASP.NET。新兴的应用程序是可以跨平台运行(如Linux或macOS)的。该章介绍.NET Core 2.0的安装指南,以及如何创建和实现.NET Standard 库。
第19章将描述ASP.NET及其多种不同的类型(例如ASP.NET Web Forms、ASP.NET MVC和ASP.NET Core)。该章末尾的习题利用了第18章的ASP.NET Web Pages和ASP.NET Core 应用程序中所创建的.NET Standard 库。
0.3.4 数据访问(第20~23章)
第20章介绍应用程序如何将数据保存到磁盘以及如何检索磁盘上的数据(作为简单的文本文件或者更复杂的数据表示方式)。该章还将讨论如何压缩数据,以及如何监视和处理文件系统的变化。
第21章学习数据交换的事实标准XML,简要论述JSON格式。在之前的章节中你接触过XML几次,而该章将讨论XML的基本规则,论述XML的所有功能。
该部分的其余章节介绍LINQ(这是内置于.NET Framework最新版本中的查询语言)。第22章简要介绍LINQ。第23章讨论如何使用LINQ访问数据库和其他数据。
0.3.5 其他技术(第24章和第25章)
第24章简要介绍Windows Communication Foundation(WCF),它为在企业级以编程方式跨本地网络和Internet访问信息和功能提供了许多工具。该章将介绍如何以平台无关的方式使用WCF,向Web应用程序和桌面应用程序公开复杂的数据和功能。
第25章展示如何创建通用Windows应用程序,这是Windows新增的内容。该章建立在第14章和第15章的基础上,介绍如何创建可以运行在所有Windows平台上的Windows应用程序。
0.4 使用《C#入门经典(第8版)》的要求
《C#入门经典(第8版)》中C#和.NET Framework的代码和描述都适用于C# 7和.NET 4.7。除了.NET Framework之外,不需要其他组件就可以理解《C#入门经典(第8版)》的这个方面,但许多示例都需要使用开发工具。《C#入门经典(第8版)》将Visual Studio Community 2017作为主要开发工具。使用Visual Studio Community 2017来创建Windows应用程序、云应用程序、跨平台的应用程序,以及访问数据库的SQL Server Express应用程序。一些功能只能在Visual Studio 2017中使用,但这不会妨碍练习《C#入门经典(第8版)》的示例。
0.5 《C#入门经典(第8版)》约定
为了帮助读者在阅读《C#入门经典(第8版)》的过程中获取最多信息,并随时了解当前处理的事项,《C#入门经典(第8版)》使用了许多约定。
警告:
带有警告图标的方框包含重要且应该记住的信息,这些信息与周围的文字直接关联。
提示:
带有铅笔图标的方框表示注释、提示、暗示、技巧或对当前讨论的弦外之音。
《C#入门经典(第8版)》通过两种方式来显示代码:
● 对于大多数代码示例,使用没有突出显示的等宽字体来表示。
● 对在当前上下文中特别重要的代码,用粗体字强调显示。
尽管我们已经尽了各种努力来保证文本或代码中不出现错误,但错误总是难免的,如果你在《C#入门经典(第8版)》中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
要在网站上找到《C#入门经典(第8版)》英文版的勘误表,可以登录www.wrox.com,单击Errata链接。在这个页面上可以看到Wrox编辑已提交和张贴的所有勘误项。
如果在Book Errata页面上没有看到你找出的错误,请进入www.wrox.com/contact/techsupport.shtml,填写表单,发送电子邮件,我们就会检查你发布的信息。如果是正确的,就在《C#入门经典(第8版)》的勘误表中张贴一条消息,我们将在《C#入门经典(第8版)》的后续版本中采用。