
第一篇 基础知识篇
第1章 初识Visual Studio
本章概览
软件在人们的日常生活中随处可见,比如,大家使用的Windows操作系统、智能手机中的各种应用等都是软件。那么,这些软件是如何生成的呢?我们能不能开发自己的软件呢?答案是可以的。本章将带领大家了解C#(读作C Sharp)及其使用的开发环境Visual Studio 2017。C#是微软公司推出的一种语法简洁、类型安全的面向对象的编程语言,使用它可以开发各种软件,而Visual Studio 2017则是使用C#开发软件最好的工具。
知识框架

1.1 了解软件

随着计算机的普及,计算机中安装的软件在人们的日常生活和工作中的作用也越来越重要。例如,大家在聊天时经常用的QQ软件(见图1.1);在工作过程中使用的Office办公软件(见图1.2);在处理照片时使用的美图秀秀软件(见图1.3);在观看视频时使用的优酷视频播放软件(见图1.4)等。

图1.1 QQ软件

图1.2 Office办公软件之Excel

图1.3 美图秀秀软件

图1.4 优酷视频播放软件
以上软件都是我们经常用到的一些软件。那么,什么是软件呢?
软件其实是一种计算机程序,而计算机程序是指为了得到结果由计算机等具有信息处理能力的硬件装置执行的代码化指令集合。
计算机程序告诉计算机如何完成一个具体的任务。由于现在的计算机还不能理解人类的自然语言,所以不能用自然语言编写计算机程序,这就需要借助计算机语言(程序设计语言,它是一种人和计算机交换信息的语言)指挥计算机进行工作。
综上所述,一个软件的生成过程为:程序员将由计算机语言组成的代码输入计算机,计算机对代码进行解释编译,最后由计算机生成软件,如图1.5所示。

图1.5 软件的生成过程
1.2 软件开发相关概念

计算机程序涉及的概念都比较抽象、专业,经常有初学编程的人对专业性的名词不明所以。本节将对常见的与软件开发相关的概念进行介绍。
1.算法
算法是指对计算机工作步骤和方法的描述。算法的每个步骤都是有着严格规定的,这些步骤能够被计算机识别并正确执行,并且每个步骤都能够被计算机理解为一个或一组唯一的动作,而不使计算机产生歧义。算法必须有开始和结束,并且必须保证算法规定的每个步骤最终都能够被完成。
下面通过一个例子来说明算法。例如,要交换变量a与变量b的值,计算机本身不能够直接执行这个操作,交换两个变量值的通用方法是借用第三方变量将其作为临时变量。具体算法描述如下。
(1)将变量a的内容赋值给临时变量c。
(2)将变量b的内容赋值给变量a。
(3)将临时变量c存放的内容赋值给变量b。
最终算法可以写成:

综上所述,算法实际上是用自然语言描述的一个计算机程序,编写计算机程序也就是把用某种方式描述的算法通过计算机语言重新描述。
2.数据结构
数据结构是一种计算机进行存储和组织数据的方式。数据很好理解,比如我们去买东西,共花了50元,50就是一个准确的数据。在计算机中,数据有整数、实数、字符串、图像和声音等多种类型,而数据结构就是指各种类型数据之间的相互关系。常见的数据结构有数组、栈、队列、链表、树、图等,如图1.6所示为一个树结构。

图1.6 一个树结构
3.IDE
IDE是Integrated Development Environment的缩写,表示集成开发环境,它是一种用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试工具和图形化用户界面工具等。例如,用于开发C#程序的Visual Studio(见图1.7)、用于开发Java程序的Eclipse(见图1.8)等都是集成开发环境。

图1.7 Visual Studio集成开发环境

图1.8 Eclipse集成开发环境
4.SDK
SDK是Software Development Kit的缩写,中文释义为软件开发工具包,它是一个覆盖面很广的名词,可以这么说:辅助开发某一类软件的相关文档、实例和工具的集合都可以称为SDK。例如,在使用C#进行开发之前,需要安装由微软公司推出的.NET SDK(.NET软件开发工具包)。
5.编译
编译是指把计算机语言变成计算机可以识别的二进制语言。由于计算机只识别0和1,所以编译程序就是把使用计算机语言编写的程序编译成计算机可以识别的二进制语言程序的过程。
1.3 C#入门
C#是一种面向对象的编程语言,主要用于开发运行在.NET平台上的应用程序。C#的语言体系都构建在.NET框架上。由TIOBE编程语言排行榜(见图1.9)可以看出,C#居于主流编程语言行列,这在一定程度上也说明了C#被越来越多的人所认可和使用。本节将详细介绍C#,以及C#与.NET的关系。

图1.9 TIOBE编程语言排行榜
1.3.1 C#的发展

C#是微软发布的一种编程语言,主要由Anders Hejlsberg(Delphi和Turbo Pascal语言的设计者)主持开发,它主要是微软公司为配合.NET战略推出的一种编程语言。
轻松一刻:在Java出现之后,Anders Hejlsberg在Borland公司一直郁郁不得志。这时,比尔·盖茨慧眼识才,三顾茅庐,把Anders Hejlsberg请到了微软。最开始微软许以重金,但Anders Hejlsberg不为所动,在清楚Anders Hejlsberg的想法后,比尔·盖茨答应给他一个宽松的环境——领导VJ++(Visual J++)小组,并提供高额的薪水和红利奖金。但好景不长,Sun公司认为微软破坏了Java的跨平台性,很快微软就会利用VJ++将Java开发人员拉拢到它的周围,而它的VJ++及WFC的很多特性明显是为Windows平台设计的。这样,Sun公司中止了对微软的Java授权,而这促使微软选择Anders Hejlsberg担任C#的首席设计师,从而开发并设计了C#。
由于C#本身是为配合.NET战略推出的,因此其发展变化一直是与.NET的发展相辅相成的。C#版本发展历程如图1.10所示。

图1.10 C#版本发展历程
说明:由于C#是与.NET相辅相成的,因此,图1.10中的C#版本的变化也体现了.NET的版本发展史,.NET的相关介绍将在1.3.3节进行;另外,微软曾在2006年发布过.NET 3.0版本,但该版本并没有对应的C#版本推出,使用的还是2.0版本的C#,所以在图1.10中并没有体现。
1.3.2 C#的特点

C#的主要特点如下。
·语法简洁。C#不允许直接操作内存,去掉了指针操作。
·彻底地面向对象设计。C#具有面向对象语言应有的一切特性(封装、继承和多态等)。
·与Web紧密结合。C#支持绝大多数的Web标准,如HTML、XML、SOAP等。
·强大的安全性机制。C#可以消除软件开发中常见的错误(如语法错误),.NET提供的垃圾回收器能够帮助开发者有效地管理内存资源。
·兼容性。因为C#遵循.NET的公共语言规范(CLS),所以能够保证与其他语言开发的组件兼容。
·完善的错误和异常处理机制。C#提供了完善的错误和异常处理机制,使程序在交付应用时能够更加完善。
1.3.3 .NET Framework的介绍

.NET Framework又称为.NET框架,是微软推出的完全面向对象的软件开发与运行平台,有两个主要组件:公共语言运行时(Common Language Runtime,CLR)和类库,如图1.11所示。

图1.11 .NET Framework的组成
下面分别对.NET Framework的两个主要组成部分进行介绍。
·公共语言运行时。公共语言运行时负责管理和执行由.NET编译器编译产生的中间语言代码,.NET程序执行原理如图1.12所示。公共语言运行时包含两部分内容,分别为CLS和CTS。其中,CLS表示公共语言规范,它是许多应用程序所需要的一套基本语言功能;而CTS表示通用类型系统,它定义了可以在中间语言中使用的预定义数据类型,所有面向.NET Framework的语言最终都可以生成基于这些类型的编译代码。

图1.12 .NET程序执行原理
说明:中间语言(IL或MSIL,Microsoft Intermediate Language)是使用C#或VB.NET编写的软件。只有在软件运行时,.NET编译器才将中间代码编译成计算机可以直接读取的数据。
·类库。类库中有很多编译好的类,可以直接使用。例如,在进行多线程操作时,可以直接使用类库中的Thread类;在进行文件操作时,可以直接使用类库中的IO类等。类库相当于一个仓库,这个仓库装满了各种工具,可以供开发人员直接使用。
1.3.4 C#与.NET Framework

.NET Framework是微软推出的一个开发平台,而C#是专门为与微软的.NET Framework结合使用而设计的一种编程语言。在.NET Framework平台上进行开发时,可以使用多种开发语言,如C#、VB.NET、VC++.NET、F#等,而C#只是其中的一种。
说明:运行使用C#开发的程序时,必须安装.NET Framework。.NET Framework可以随Visual Studio 2017一起安装,也可以在相关网站下载单独的安装文件进行安装。
1.3.5 C#的应用领域

C#几乎可用于所有领域,如便携式计算机、手机或网站等,其主要应用领域如下。
·游戏软件的开发。
·桌面应用系统的开发。
·智能手机程序的开发。
·多媒体系统的开发。
·网络系统的开发。
·RIA应用程序的开发。
·操作系统平台的开发。
·Web应用的开发。
例如,视频播放软件PPTV桌面版(见图1.13)、中国工商银行官方网站(见图1.14)、国内分类信息网58同城官方网站(见图1.15)、携程旅行网官方网站(见图1.16)等项目都是使用C#编写的。

图1.13 PPTV播放器

图1.14 中国工商银行官方网站

图1.15 58同城官方网站

图1.16 携程旅行网官方网站
很多知名公司都将C#作为其项目开发的主要语言,比如,中国移动、明日科技、百度、微软、优酷等,如图1.17所示。

图1.17 使用C#的知名公司
1.4 Visual Studio 2017的安装与卸载
Visual Studio 2017是微软为了配合.NET战略推出的IDE,同时也是目前开发C#程序的工具,本节对Visual Studio 2017的安装与卸载进行详细讲解。
1.4.1 安装Visual Studio 2017的必备条件

在安装Visual Studio 2017之前,首先要了解安装Visual Studio 2017的必备条件,检查计算机的软件和硬件配置是否满足Visual Studio 2017的安装要求,具体要求如表1.1所示。
表1.1 安装Visual Studio 2017的必备条件

1.4.2 安装Visual Studio 2017

Visual Studio 2017是微软为了配合.NET战略推出的IDE,也是开发C#程序的工具。本小节以社区版的Visual Studio 2017安装为例讲解其具体的安装步骤。
说明:社区版的Visual Studio 2017是完全免费的。
安装社区版的Visual Studio 2017的步骤如下。
步骤1,社区版的Visual Studio 2017安装文件是可执行文件,其命名格式为“vs_community__编译版本号.exe”;本书中下载的安装文件名为vs_community__ 1978667224.1494576159.exe,双击该文件开始安装。
说明:在安装Visual Studio 2017时,计算机必须安装有.NET Framework 4.6框架。如果没有安装,请先到微软官方网站下载并安装。
步骤2,程序跳转到Visual Studio 2017安装界面,如图1.18所示,在该界面单击“继续”按钮。

图1.18 Visual Studio 2017安装界面(1)
步骤3,程序加载完成后,自动跳转到安装选择项界面,如图1.19所示,在该界面主要将“通用Windows平台开发”、“.NET桌面开发”和“ASP.NET和Web开发”这3个复选框选中,对于其他的复选框,读者可以根据自己的开发需要确定是否选择安装;选择完要安装的功能后,在下面“位置”处选择要安装的路径,这里不建议安装在系统磁盘中,可以选择一个其他磁盘进行安装,比如,将其安装到D盘中。设置完成后,单击“安装”按钮。

图1.19 Visual Studio 2017安装界面(2)
注意:在安装Visual Studio 2017时,一定要确保计算机处于联网状态,否则无法正常安装。
步骤4,跳转到安装进度界面,如图1.20所示,该界面显示当前的安装进度。

图1.20 Visual Studio 2017安装界面(3)
步骤5,安装完成后,自动进入安装完成界面,如图1.21所示,在该界面中,可以直接单击“启动”按钮,启动新安装的Visual Studio 2017,也可以在系统的开始菜单中,单击“Visual Studio 2017”选项启动该开发环境。

图1.21 Visual Studio 2017安装界面(4)
说明:在安装完成界面可能会出现一条“Android SDK”警告信息,这条警告信息不影响Visual Studio 2017的正常使用,忽略即可。
如果是第一次启动Visual Studio 2017,会出现如图1.22所示提示框,直接单击“以后再说”,进入Visual Studio 2017主界面。Visual Studio 2017主界面如图1.23所示。

图1.22 启动Visual Studio 2017

图1.23 Visual Studio 2017主界面
1.4.3 卸载Visual Studio 2017

如果要卸载Visual Studio 2017,可以按以下步骤进行。
步骤1,在Windows 7操作系统中,依次打开“控制面板”→“程序”→“程序和功能”,在打开的窗口中选中“Microsoft Visual Studio 2017”,如图1.24所示。

图1.24 添加或删除程序界面
步骤2,单击“卸载”按钮,进入Visual Studio 2017的卸载界面,如图1.25所示,单击“Uninstall”按钮即可卸载Visual Studio 2017。

图1.25 Visual Studio 2017的卸载界面
1.5 熟悉Visual Studio 2017
本节对Visual Studio 2017中的菜单栏、工具栏、解决方案资源管理器、“工具箱”窗口、“属性”窗口和“错误列表”窗口等进行介绍。
1.5.1 创建项目

初期学习C#语法和面向对象编程主要在Windows控制台应用程序环境下完成,下面将按步骤介绍控制台应用程序的创建过程。
创建控制台应用程序的步骤如下。
步骤1,依次选择“开始”→“所有程序”→“Visual Studio 2017”,进入Visual Studio 2017起始页,如图1.26所示。

图1.26 Visual Studio 2017起始页
步骤3,启动Visual Studio 2017之后,可以通过两种方法创建项目:一种是在菜单栏中依次选择“文件”→“新建”→“项目”,如图1.27所示;另一种是在Visual Studio 2017起始页选择“新建项目”模块中的相应命令,如图1.28所示。

图1.27 在菜单栏中依次选择“文件”→“新建”→“项目”

图1.28 选择“新建项目”模块中的相应命令
使用其中一种方法创建项目,弹出“新建项目”对话框,如图1.29所示。

图1.29 “新建项目”对话框
说明:在图1.29中选择“Windows窗体应用(.NET Framework)”即可创建Windows窗体应用程序。
步骤4,选择要使用的.NET框架和“控制台应用(.NET Framework)”后,用户可对要创建的控制台应用程序进行命名、选择存放位置、是否创建解决方案目录等的设定(在命名时可以使用用户自定义的名称,也可以使用默认名ConsoleApp1;用户可以单击“浏览”按钮设置项目存放的位置;需要注意的是,解决方案名称与项目名称一定要一致),然后单击“确定”按钮,完成控制台应用程序的创建。
1.5.2 菜单栏

菜单栏显示了所有可用的Visual Studio 2017命令,除“文件”“编辑”“视图”“窗口”“帮助”菜单,还提供编程专用的功能菜单,如“项目”“生成”“调试”“工具”“测试”等菜单,如图1.30所示。
每个菜单项中都包含若干个菜单命令,用于执行不同的操作。例如,“调试”菜单包括调试程序的各种命令,如“开始调试”“开始执行”“新建断点”等命令,如图1.31所示。

图1.30 Visual Studio 2017菜单栏

图1.31 “调试”菜单
1.5.3 工具栏

为了操作的方便和快捷,菜单项中常用的命令按功能分组分别放在相应的工具栏中。通过工具栏可以快速访问常用菜单命令。常用的工具栏有标准工具栏和调试工具栏,下面分别对其进行介绍。
(1)标准工具栏包括大多数常用的命令按钮,如“新建项目”“添加新项”“打开文件”“保存”“全部保存”等。Visual Studio 2017标准工具栏如图1.32所示。

图1.32 Visual Studio 2017标准工具栏
(2)Visual Studio 2017调试工具栏包括对应用程序进行调试的快捷按钮,如图1.33所示。

图1.33 Visual Studio 2017调试工具栏
说明:在调试程序或运行程序的过程中,通常可用以下4种快捷键来操作。
●按下〈F5〉快捷键实现调试运行程序;
●按下〈Ctrl+F5〉快捷键实现不调试运行程序;
●按下〈F11〉快捷键实现逐语句调试程序;
●按下〈F10〉快捷键实现逐过程调试程序。
1.5.4 解决方案资源管理器

解决方案资源管理器(见图1.34)提供项目及文件的视图,并且提供对项目和文件相关命令的便捷访问。与此窗口关联的工具栏提供了适用于列表中突出显示项的常用命令。若要访问解决方案资源管理器,可以通过依次选择“视图”→“解决方案资源管理器”打开。

图1.34 解决方案资源管理器
1.5.5 “工具箱”窗口

工具箱是Visual Studio 2017的重要工具,每一个开发人员都必须对这个工具非常熟悉。工具箱提供了进行C#程序开发所必需的控件。通过使用工具箱,开发人员可以方便地进行可视化的窗体设计,简化程序设计工作,提高工作效率。根据控件功能的不同,可以将工具箱划分为10个栏目,如图1.35所示。
说明:“工具箱”窗口在Windows窗体应用程序或ASP.NET网站应用程序中才会显示,在控制台应用程序中没有“工具箱”窗口,图1.35中显示的“工具箱”是Windows窗体应用程序中的“工具箱”窗口。
单击某个栏目,则会显示该栏目下的所有控件,如图1.36所示。当需要某个控件时,可以通过双击所需要的控件直接将控件加载到Windows窗体中,也可以先单击选择需要的控件,再将其拖到Windows窗体中。

图1.35 “工具箱”窗口

图1.36 展开后的“工具箱”窗口
1.5.6 “属性”窗口

“属性”窗口是Visual Studio 2017中的另一个重要工具,该窗口为C#程序的开发提供了简单的属性修改方式。Windows窗体中各个控件的属性都可以在“属性”窗口进行设置。“属性”窗口不仅提供了属性的设置及修改功能,还提供了事件的管理功能。“属性”窗口可以管理控件的事件,以便在编程时对事件进行处理。
另外,“属性”窗口采用了两种方式管理属性和方法,分别为按分类方式和按字母顺序方式,读者可以根据自己的习惯采用不同的方式。在“属性”窗口下方还有简单的帮助,方便开发人员对控件的属性进行操作。“属性”窗口的左侧是属性名称,右侧是属性值。“属性”窗口如图1.37所示。

图1.37 “属性”窗口
1.5.7 “错误列表”窗口

“错误列表”窗口对代码中的错误可以进行即时提示并提供可能的解决方法。例如,某句代码结束处没有分号,“错误列表”窗口中会显示如图1.38所示的错误。“错误列表”窗口就像一个错误提示器,它可以将程序中的错误代码及时地显示给开发人员,开发人员可以通过提示信息找到相应的错误代码。

图1.38 “错误列表”窗口
说明:双击错误列表中的某项,Visual Studio 2017会自动定位到发生错误的代码。
1.6 小结
本章首先对软件及软件开发的相关概念进行了简单介绍,然后对C#的发展历史、C#与.NET Framework的关系及C#的应用领域进行了介绍,最后重点讲解了Visual Studio 2017的安装及使用。在学习本章时,应该重点掌握Visual Studio 2017的安装过程,以及如何使用Visual Studio 2017。