书海网短评:
通过《VisualC#从入门到精通(第9版)》,读者将掌握新版本VisualStudio2017与VisualC#的基础编程知识。经验丰富的软件开发人员,可以通过本书的所有编程指导、练习和代码,着手开发响应速度快、扩展性强的
通过《VisualC#从入门到精通(第9版)》,读者将掌握新版本VisualStudio2017与VisualC#的基础编程知识。经验丰富的软件开发人员,可以通过《Visual C#从入门到精通(第9版)》的所有编程指导、练习和代码,着手开发响应速度快、扩展性强的Windows10和UniversalWindowsPlatform应用程序。
《VisualC#从入门到精通(第9版)》涉猎以下主题,可以帮助你掌握Windows开发精髓
使用VisualStudio2017快速开始创建VisualC#代码和项目
探索变量、操作符、表达式和方法的使用
运用决策和迭代语句来控制程序流程
运用错误、异常和资源管理来构建更健壮的app
掌握VisualC#的面向对象编程基础
掌握枚举、结构、泛型、索引器和其他高级特性的用法
用LINQ查询表达式来创建内存数据查询
通过异步方法来提升应用程序的吞吐量和响应时间
解耦应用程序逻辑和事件处理
用新增app模板来进行流水开发
模型-视图-视图模型(MVVM)的实现
构建可以无缝适应PC,平板和Windows手机的UniversalWindowsPlatformapp
集成MicrosoftAzure云端数据库和RESTfulWeb服务
C#作为微软的旗舰编程语言,深受程序员喜爱,是编写高效应用程序的语言。VisualC#2017提供了大量新功能,《VisualC#从入门到精通(第9版)》围绕语言的基础知识和这些新功能全面介绍了如何利用VisualStudio2017和.NETFramework4.6.1编写C#应用程序。《VisualC#从入门到精通(第9版)》沿袭深受读者欢迎的StepbyStep风格,通过合理的练习引导读者逐步构建在Windows10上运行的应用程序、访问SQLServer数据库以及开发多线程应用等。
《Visual C#从入门到精通(第9版)》共27章,结构清晰,叙述清楚。所有练习均在VisualStudio2017简体中文版上进行过全面演练。无论是刚开始接触面向对象编程的新手,还是打算迁移到C#的C、C++或Java程序员,都可以从《VisualC#从入门到精通(第9版)》汲取到新的知识。迅速掌握C#编程技术。
约翰.夏普(JohnSharp)
微软MVP,资深技术作家,ContentMaster(英国CM集团的分支机构)的首席技术专家。John拥有伦敦帝国理工学院的计算机荣誉学士学位。过去27年,他一直致力于软件开发和培训教程与课程的写作。John拥有丰富的技术资历,精通数据库系统、UNIX、C、C++和C#应用开发。他还开发过Java和JavaScript应用,用WindowsAzure设计企业级方案。
译者简介
周靖
微软MVP,翻译风格严谨、准确、朴实、流畅,深受读者欢迎。代表译著有《VisualC#从入门到精通》系列版本、《C#本质论》、《CLRviaC#》系列版本和WalterSavitch教授的经典教材《C++程序设计》系列版本。
第I部分VisualC#和VisualStudio2017概述
第1章欢迎进入C#编程世界
第2章使用变量、操作符和表达式
第3章方法和作用域
第4章使用判断语句
第5章使用复合赋值和循环语句
第6章管理错误和异常
第II部分理解C#对象模型
第7章创建并管理类和对象
第8章理解值和引用
第9章使用枚举和结构创建值类型
第10章使用数组
第11章理解参数数组
第12章使用继承
第13章创建接口和定义抽象类
第14章使用垃圾回收和资源管理
第III部分用C#定义可扩展类型
第15章实现属性以访问字段
第16章处理二进制数据和使用索引器
第17章泛型概述
第18章使用集合
第19章枚举集合
第20章分离应用程序逻辑并处理事件
第21章使用查询表达式来查询内存中的数据
第22章操作符重载
第IV部分用C#构建UWP应用
第23章使用任务提高吞吐量
第24章通过异步操作提高响应速度
第25章实现UWP应用的用户界面
第26章在UWP应用中显示和搜索数据
第27章在UWP应用中访问远程数据库
译者后记
第2章使用变量、操作符和表达式
学习目标
理解语句、标识符和关键字
使用变量存储信息
使用基元数据类型
使用+和-以及其他算术操作符
变量递增递减
第1章讲述了如何用MicrosoftVisualStudio2017编程环境生成和运行控制台应用程序和图形应用程序。本章学习MicrosoftVisualC#的语法和语义元素,包括语句、关键字和标识符;学习C#语言内建的基元数据类型以及每种类型所容纳的值的特征;学习如何声明和使用局部变量(只存在于方法或其他小节内的变量);学习C#算术操作符;学习如何使用操作符来处理值;还将学习如何控制含有两个或更多操作符的表达式。
2.1理解语句
语句是执行操作的命令,如计算值,存储结果,或者向用户显示消息。我们组合各种语句来创建方法。第3章将更详细地介绍方法。目前暂时将方法视为具名的语句序列。第1章介绍过的Main就是方法的例子。
C#语句遵循良好定义的规则集。这些规则描述语句的格式和构成,统称为语法。对应地,描述语句做什么的规范统称为语义。最简单也是最重要的一个C#语法规则是:所有语句都必须以分号终止。例如,第1章演示过假如没有终止分号,以下语句不能编译:
Console.WriteLine("HelloWorld!");
提示C#是“自由格式”语言,意味着所有空白(如空格字符或换行符)仅充当分隔符,除此之外毫无意义。换言之,可采取自己喜欢的任意样式安排语句布局。简单的、统一的布局样式使程序更易阅读和理解。
学好语言的窍门是先了解其语法和语义,采用自然的、符合语言习惯的方式使用语言。这会使程序变得更易理解和修改。《Visual C#从入门到精通(第9版)》为很多非常重要的C#语句提供了实际的例子。
2.2使用标识符
标识符是对程序中的各个元素进行标识的名称。这些元素包括命名空间、类、方法和变量(后面很快就会讲到变量)。在C#语言中选择标识符时必须遵循以下语法规则:
只能使用字母(大写和小写)、数字和下划线
标识符必须以字母或下划线开头
例如,result,_score,footballTeam和plan9是有效标识符;result%,footballTeam$和9plan不是。
重要提示C#区分大小写。例如,footballTeam和FootballTeam是不同的标识符。
认识关键字
C#语言保留77个标识符供自己使用,程序员不可出于自己的目的而重用这些标识符。这些标识符称为关键字,每个关键字都有特定含义。关键字的例子包括class、namespace和using等。随着《Visual C#从入门到精通(第9版)》讨论的深入,将学习大多数关键字的含义。下面列出了这些关键字。
abstractdoinprotectedtrue
asdoubleintpublictry
baseelseinterfacereadonlytypeof
boolenuminternalrefuint
breakeventisreturnulong
byteexplicitlocksbyteunchecked
caseexternlongsealedunsafe
catchfalsenamespaceshortushort
charfinallynewsizeofusing
checkedfixednullstackallocvirtual
classfloatobjectstaticvoid
constforoperatorstringvolatile
continueforeachoutstructwhile
decimalgotooverrideswitch
defaultifparamsthis
delegateimplicitprivatethrow
提示C#在“代码和文本编辑器”窗口中,输入的关键字默认自动显示成蓝色。
C#还使用了以下标识符。这些不是C#保留关键字,可作为自己方法、变量和类的名称使用,但尽量避免这样做。
addglobalselect
aliasgroupset
ascendingintovalue
asyncjoinvar
awaitletwhen
descendingnameofwhere
dynamicorderbyyield
frompartial
getremove
2.3使用变量
变量是容纳值的一个存储位置。可将变量想象成计算机内存中容纳临时信息的容器。程序每个变量在其使用范围内都必须有无歧义名称。我们用该名称引用变量容纳的值。例如,存储商品价格可创建cost变量,并将价格存储到该变量。以后引用cost变量,获取的值就是之前存储的价格。
2.3.1命名变量
为变量采用恰当的命名规范来避免混淆。作为开发团队的一员,这一点尤其重要。统一的命名规范有助于减少bug。下面是一些常规建议。
不要以下划线开头。虽然在C#中合法,但限制了和其他语言(如VisualBasic)的代码的互操作性。
不要创建仅大小写不同的标识符。例如,不要同时使用myVariable和MyVariable变量,它们很易混淆。而且在VisualBasic这样不区分大小写的语言中,类的重用性也会受限。
名称以小写字母开头。
在包含多个单词的标识符中,从第二个单词起,每个单词都首字母大写(称为camelCase记号法)。
不要使用匈牙利记号法。MicrosoftVisualC++开发人员熟悉这种记号法。不明白匈牙利记号法也不必深究。
例如,score,footballTeam,_score和FootballTeam都是有效变量名,但后两个不推荐。
前言
MicrosoftVisualC#是一种功能强大、使用简单的语言,主要面向需要使用Microsoft.NETFramework来创建应用程序的开发者。它在C++和MicrosoftVisualBasic的基础上去芜存菁,最终形成一种更加清晰、更富有逻辑的语言。
C#1.0于2001年亮相。
几年后随着C#2.0和VisualStudio2005的问世,语言新增了几个重要功能,包括泛型、迭代器和匿名方法等。
随同VisualStudio2008发布的C#3.0添加了更多功能,包括扩展方法、Lambda表达式以及语言集成查询(LanguageIntegratedQuery,LINQ)。
2010年发布的C#4.0继续增强,改善了与其他语言和技术的互操作性。新增功能包括具名参数和可选参数,另外还有dynamic类型(指示语言的“运行时”对对象进行晚期绑定)。在随C#4.0发布的.NETFramework中,最重要的新功能就是“任务并行库”(TaskParallelLibrary,TPL)。可用TPL构建具有良好伸缩性的应用程序,从而快速和简单地发挥出多核处理器的潜力。
C#5.0通过async方法修饰符和await操作符提供了对异步任务的原生支持。
C#6.0是一次增量式升级,提供了许多有利于简化开发的功能,包括字符串插值(再也不需要String.Format了),改进的属性实现方式,表达式主体方法等。
C#7.0进一步增强,提高了生产力并移除了C#一些不合时宜的设计。例如,现在属性访问器方法可作为表达式主体成员实现,方法支持以元组形式返回多个值,简化了out参数的用法,switch语句开始支持模式和类型匹配。还有其他许多更新,《Visual C#从入门到精通(第9版)》将一一阐述。
虽然Windows10是运行C#应用程序最重要的平台,但现在也可通过.NETCore运行时在其他操作系统(包括Linux)上运行用C#写的代码。这使程序更容易在多种环境中运行。另外,Windows10支持高度交互性的应用程序,它们可以进行数据共享和协作,还可以连接云服务。Windows10最引人注目的是对UWP(UniversalWindowsPlatform,通用Windows平台)应用的支持。这种应用设计在任何Windows10设备上运行,无论是全功能的桌面系统、笔记本和平板,还是资源有限的智能手机和物联网设备。熟悉C#的核心功能后,下一步就是掌握如何开发能在所有这些平台上运行的应用。
语音激活是另一个值得关注的功能。Windows10提供了Cortana(小娜)个人语音数字助理。可将自己的应用和Cortana集成来实现数据搜索和其他操作。虽然自然语音分析天生就很复杂,但让应用响应Cortana的请求却令人惊讶地简单。详情将在第26章描述。另外,从大规模企业应用程序到手机上运行的移动应用,云已成为许多系统架构的重要元素,《Visual C#从入门到精通(第9版)》最后一章会讲解如何开发基于云的应用。
VisualStudio2017开发环境使这些强大功能变得容易使用,大量新向导和增强显著提高了开发效率。写作这《Visual C#从入门到精通(第9版)》给我带来了许多乐趣,希望你的阅读亦是如此!
下面列出和《Visual C#从入门到精通(第9版)》《VisualC#从入门到精通》第8版相比的主要变化(从译者的角度整理)。
2.3.3节“指定数值”,强调了显式指定值的类型的重要性。
3.1.5节“从方法返回多个值”,引入元组概念,从一个方法返回多个值。这章开始引入表达式主体方法,注意虽然都用=>操作符,但表达式主体方法和Lambda表达式有本质的不同。相当于=>的两个重载。
3.3.2节“嵌套方法”,本节提到的Factorial解决方案在学生文件中不可用。解决方案是用空白的DailyRate解决方案。
6.2.4节“筛选异常”,catch(...)when(...){}。
6.4.1节“使用throw表达式”,用?:操作符简化抛出异常的代码。例如:stringname=nameField.Text!=""?nameField.Text:thrownewException("未输入值");。不这样写,就要写一长串if…else语句。
7.4.3节“解构对象”,讲的是和元组配合使用。Deconstruct方法和out参数相配合,向元组中的变量赋值。不要把解构器和析构器弄混了。
8.2.1节“空条件操作符”,在对象上调用其方法时,用?.操作符判断对象是否为null。例如,A?.B?.C?.Do(E);。其中,ABC任何一个求值为null,E都不会执行(短路)。
8.8.3节“复习switch语句”用switch代替一系列if(expristypevarname)...
elseif(expristypevarname)...语句,从而简化空引用检查(不用is操作符)。case还能加when表达式来进一步限制条件。
10.1.11节“访问包含值类型的数组”,讲的是一些传统数组处理方法,在数组元素从引用类型修改成值类型后会出错,因为现在返回拷贝而非引用。解决方案是用ref关键字返回引用。例如,reftypemethod(...){...returnref数组元素}。注意两个地方添加了ref。调用也要改,变成reftypevariable=refmethod(...)。
第15章的简单属性大量改为使用表达式主体方法。例如,get{returnthis._x;}改为get=>this._x;。
第16章介绍了新的常量表达式,可以直接将二进制赋给变量了:uintbinData=0b01111;。0b0是二进制,0x0是十六进制。眼睛看不过来还可以加下划线(编译器会忽略),例如uintmoreHexData=0x0_F0_5A_CC_0F;。
21.2.6节的练习和原书不符,解决方案并没有一开始就集成BinaryTree项目,需自己添加。
24.1.6节“任务、内存分配和效率”解释了如何用Cache-Aside设计模式把异步方法设计成大多数时候都同步执行,耗时的、经常重复的计算的结果放到缓存中。需要用NuGet包管理器下载System.Threading.Tasks.Extensions包。
第27章对有关Azure云的内容进行了全面修订,代码简化了不少。
《Visual C#从入门到精通(第9版)》面向的读者
《Visual C#从入门到精通(第9版)》假定你要使用VisualStudio2017和.NETFramework4.6.1学习基础的C#编程知识。学完《Visual C#从入门到精通(第9版)》后,会对C#有一个全面和透彻的理解,会用它开发响应灵敏、易于伸缩的Windows10应用程序。
《Visual C#从入门到精通(第9版)》不面向的读者
《Visual C#从入门到精通(第9版)》面向刚开始用C#进行开发的人士,重点放在C#语言上面。《Visual C#从入门到精通(第9版)》不涉及企业级Windows应用程序的开发技术,比如ADO.NET、ASP.NET、WindowsCommunicationFoundation或者WorkflowFoundation。要了解这些方面的知识,可参考微软出版社的其他书籍。
《Visual C#从入门到精通(第9版)》的组织
《Visual C#从入门到精通(第9版)》分为四部分。
第I部分“VisualC#和VisualStudio2017概述”介绍C#语言的核心语法,还演示了VisualStudio编程环境。
第II部分“理解C#对象模型”深入探讨如何用C#创建和管理新类型,如何管理这些类型引用的资源。
第III部分“用C#定义可扩展类型”全面讨论如何利用C#语言元素来构建能在多个应用程序中重用的类型。
第IV部分“用C#构建UWP应用”描述通用Windows10编程模型,以及如何用C#为新模型构建交互式应用程序。
导读
《Visual C#从入门到精通(第9版)》帮助你掌握多个基本领域的开发技能。无论刚开始学习编程,还是从另一种语言(C、C++、Java或VisualBasic)转向C#,《Visual C#从入门到精通(第9版)》都能提供帮助。参考下表找到最佳起点。
读者类型步骤
面向对象编程的新手1.按照“示例代码”一节的步骤安装练习文件
2.顺序阅读第Ⅰ部分、第Ⅱ部分和第Ⅲ部分
3.有一定经验后,如有兴趣,继续完成第Ⅳ部分的学习
熟悉C语言等1.按照“示例代码”一节的步骤安装练习文件
过程编程语言,2.略读前5章来获得对C#和VisualStudio2017的大致印
但新涉足C#象,重点阅读第6章~第22章
3.阅读第Ⅳ部分了解如何构建可伸缩的Windows应用
从面向对象语言C++或1.按照“示例代码”一节的步骤安装练习文件
Java等迁移到C#2.略读前7章,获得对C#语言和VisualStudio2017的大
致印象,重点阅读第8章~22章
3.阅读第Ⅳ部分了解如何构建UWP应用
从VisualBasic迁移到C#1.按照“示例代码”一节的步骤安装练习文件
2.顺序阅读第Ⅰ部分、第Ⅱ部分和第Ⅲ部分
3.UWP应用的开发请阅读第Ⅳ部分
4.阅读每章末尾的“快速参考”小节,
了解C#和VisualStudio2017特有的构造
做完所有练习后再将1.按目录查主题
《Visual C#从入门到精通(第9版)》用作为参考书2.阅读章末“快速参考”,查看语法和技术要点归纳
《Visual C#从入门到精通(第9版)》大多数章节都通过实例方便读者巩固刚学到的知识。无论感兴趣的是哪个主题,都注意先下载并安装好示例代码。
《Visual C#从入门到精通(第9版)》的约定和特色
《Visual C#从入门到精通(第9版)》通过一些约定来增强内容的可读性,以便于读者理解。
每个练习都用编号的操作步骤来完成。
“注意”等特色段落提供了成功完成一个步骤需要了解的额外信息或替代方案。
要求读者输入的文本加粗显示。
两个键名之间的加号(+)意味着必须同时按下这两个键。例如,“按组合键Alt+Tab”意味着按住Alt键,再按Tab键。
描述菜单操作时,采用“文件”|“打开”的形式,意思是从“文件”菜单中选择“打开”命令。
系统需求
为了完成《Visual C#从入门到精通(第9版)》的练习,需准备以下硬件和软件:
?Windows10家庭、专业、教育或企业版,版本1507或以上
?VisualStudio2017社区、专业或企业版的最新版本。安装时最起码选择以下工作负载:
-通用Windows平台开发
-.NET桌面开发
-ASP.NET和Web开发
-Azure开发
-数据存储和处理
-.NETCore跨平台开发
?1.8GHz或更快的处理器(推荐双核或以上)
?2GBRAM(推荐4GB,在虚拟机中运行再加512MB)
?10GB可用硬盘空间
?1024×768或更高分辨率显卡
?下载软件和示例代码需要Internet连接
取决于Windows配置,可能需要以管理员身份安装和配置VisualStudio2017。
电脑上要启用开发人员模式以创建和运行UWP应用。详情参考“启用设备进行开发”(https://msdn.microsoft.com/library/windows/apps/dn706236.aspx)。
示例代码
《Visual C#从入门到精通(第9版)》大多数章节都包含互动练习供练手。从以下网址下载示例代码(包括练习完成前后两种格式):
http://aka.ms/VisCSharp9e/downloads
http://bookzhou.com
安装示例代码很简单,将下载的zip文件解压到“文档”文件夹即可。
使用示例代码
《Visual C#从入门到精通(第9版)》每一章都解释了在什么时候以及如何使用练习文件。需要练习文件时,书中会给出相应的指示,帮助你打开正确文件。
重要提示许多例子都依赖示例代码没有包含的NuGet包。这些包在首次生成项目时自动下载(有的需手动搜索并安装)。如首次打开一个项目且不生成,VisualStudio可能报告大量引用无法解析的错误。生成一次即可完成引用的解析,错误将消失。
下表总结了《Visual C#从入门到精通(第9版)》用到的所有VisualStudio2017项目和解决方案,它们以文件夹的形式进行分组以便查找。练习通常会为同一个项目提供初始文件和完成之后的版本。已完成的项目存储在带有-Complete后缀的文件夹中。
...









