购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章
准备工作

作为全书的开篇,本章将涉及以下内容,为即将开始的C#语言学习之旅做一些必要的准备工作。

● 为什么要编写程序

● C#与.NET的关系

● 认识Visual Studio开发环境

● 动手完成第一个应用程序

● 理解解决方案与项目的关系

第1集

1.1 为什么要编写程序

计算机可以为我们完成许多事情,不仅效率高,而且准确率高。但是,计算机不同于人的大脑,它自身不会思考问题,为了让计算机能够按照人们预先设定好的顺序或步骤去处理数据,人们就得事先编写好用于解决某个问题的一整套指令集,然后将这些指令输入计算机,并经过专门的“翻译”程序,把已编写好的指令翻译为计算机可以识别的机器指令。最后,计算机就会根据编写好的程序来完成工作,并得到预期的结果。

例如要让计算机实现:用户通过键盘输入一个数字,计算机接收到数字后进行分析,判断该数值是否大于或等于100,如果是就在屏幕上显示“你输入了一个大于或等于100的数”,否则显示“你输入了一个小于100的数”。这个程序的执行过程示意图如图1-1所示。

图1-1 程序的执行过程示意图

因此,需要告诉计算机依次执行以下几条命令:

    指令1  接收键盘输入的数字
    指令2  判断输入的数字是否大于或等于100,如果是,跳转到指令3并执行,否则就跳转到指令4并执行
    指令3  在屏幕上显示消息“你输入了一个大于或等于100的数”
    指令4  在屏幕上显示消息“你输入了一个小于100的数”

从这个简单的例子可知,只要为计算机编写好正确的指令,计算机就会按照既定的指令一步一步去执行,并反馈最后的处理结果。试想一下,如果能够编写程序让计算机完成很复杂的并且需要多次重复的计算,人们就能够从繁杂的工作中解放出来,利用这些节约出来的时间去完成其他工作,生产效率就会显著提高。

总体而言:编写程序是为了快速有效地解决实际问题。

1.2 C#与.NET的关系

C#编写的应用程序必须放置于.NET环境中才能正常运行。C#代码最终会被编译为“中间语言”(Microsoft Intermediate Language,MSIL),这样一来就可以与其他.NET所支持的语言编写的代码融合到一起,如使用Visual Basic.NET或托管C++所编写的代码。为什么要把各种语言的源代码都编译为MSIL呢?例如,公司有一个团队,成员A擅长Visual Basic语言,成员B则对C#语言较为熟悉,在开发过程中,团队中各成员只需要使用自己所熟知的语言去编写程序,最后可以统一编译为MSIL代码。这无疑提升了团队内部的协作能力,而团队中的成员也不必花时间去学习另一门语言就可以融入团队的项目中。

尽管.NET平台支持多种编程语言,但是C#语言是专为.NET平台而推出的,因此人们在学习.NET开发相关技术时会优先考虑C#语言。当然,也不是绝对地非要使用C#不可。

我们要清楚的一点是,不能错误地认为C#就是.NET,.NET就是C#。二者之间不存在对等关系,.NET是一个运行环境,它支持使用多种编程语言开发程序,而C#只是其中的一门语言。

那么.NET又是用来做什么的呢?它包含各种应用程序所需要的运行库,使开发者所编写的应用程序可以顺利运行。如果说.NET是一个“大舞台”,那么程序就是舞台上的表演者。这就好比,我们要下厨做一顿饭,所需要的各种原材料都需要事先购买,然后拿到厨房去加工处理,直到把饭菜做好。不可能在需要用电饭煲时,自己去造一个,显然那是不现实的。我们学会如何穿衣服,并不一定要学会纺织衣服。.NET集成了许多的“零部件”,在开发应用程序时,开发者可以根据具体需要拿来用即可。

1.3 强大的开发工具——Visual Studio

1.3.1 下载和安装

如果手头上有一张很不错的音乐CD,但是没有良好的音响设备,那么仍然无法聆听到美妙动听的音乐。同理,使用C#语言进行编程,如果没有一款强大的开发工具,在编写程序时也会感到有些吃力。就像人们处理文档使用Word,美化照片使用Photoshop一样,使用C#语言进行开发,微软公司准备了一个强大的集成开发环境,即开发工具。从建模到编写代码,再到测试都可以在同一个工具中完成,而且还可以完成设计数据库和表结构等任务。

这个工具叫作Visual Studio,简称VS。Visual Studio有许多版本,都是为不同规模的开发团队所准备的,Visual Studio的官方网站http://www.visualstudio.com/zh-cn上有各版本的说明。对于小型团队和初学者来说,没有必要考虑高级版本,只需要下载免费的Community版本(即社区版)即可。

下载并运行安装程序,它会启动一个Visual Studio的专用安装器窗口,如图1-2所示。在窗口中找到要安装的Visual Studio版本,单击“安装”按钮,进入安装选项界面,如图1-3所示。

图1-2 Visual Studio的专用安装器窗口

图1-3 安装选项页面

从“工作负载”标签页中找到“.NET Core跨平台开发”,并单击其右上角的选择框,使其处于被选中状态,如图1-4所示。

图1-4 选中要安装的功能

页面右侧的“安装详细信息”栏中会列出即将要安装的组件。其中,“可选”节点下的组件一般不经常使用,可以不选择。最后单击“安装”按钮,安装程序会自动下载并完成设置,整个过程都是自动的,不需要手动操作。

1.3.2 认识Visual Studio

与其他应用软件一样,安装成功后就可以在“开始”菜单中找到Visual Studio的快捷方式,单击即可启动。或者直接按下快捷键Win + S,通过集成搜索找到它。为了方便调用,也可以把Visual Studio的快捷方式添加到桌面或任务栏上的快捷启动列表中。

Visual Studio主界面如图1-5所示,其主窗口比较整齐简洁。和其他应用软件一样,Visual Studio的主窗口包括标题栏、菜单栏、工具栏和状态栏,并且在主窗口的左、右两侧,以及底部都可以停靠子窗口。

图1-5 Visual Studio主界面

菜单栏和工具栏用于调用指定的功能,状态栏则负责呈现一些提示信息,如是否编译成功。与多窗口浏览器相似,打开的子窗口可以排列在窗口列表选项卡上,其他工具窗口可以在停靠栏中排列。

1.3.3 快捷键

快捷键显示在菜单项的文本后面或者工具栏按钮的提示信息中,普通的快捷键如Ctrl+F,相信大家都知道如何去激活。仔细观察Visual Studio主窗口中的各个菜单项,会发现许多菜单项的快捷键有些陌生,比如【视图】菜单下的【团队资源管理器】后的快捷键显示为Ctrl + \, Ctrl + M,其使用方法如下:先按下Ctrl + \,这时状态栏上提示“(Ctrl + \)已按下,正在等待按下第二个键…”,接着,再按下Ctrl + M,这时“团队资源管理器”窗口就被打开了,如图1-6所示。

再如,【视图】菜单下的【对象浏览器】后面显示的快捷键为Ctrl + W, J,该类快捷键的激活方法与上面的【团队资源管理器】相似,具体方法如下:先按下Ctrl + W,这时状态栏提示“(Ctrl + W)已按下,正在等待按下第二个键…”,接着按下Ctrl + J,“对象浏览器”窗口就打开了,如图1-7所示。

图1-6 “团队资源管理器”窗口

图1-7 “对象浏览器”窗口

1.3.4 放置子窗口

不仅可以通过拖动来调整选项卡列表上的窗口次序,还可以将其拖出Visual Studio主窗口,成为一个顶级窗口,方法如下:按住窗口标题按钮,然后拖动鼠标,把窗口拖离主窗口,最后释放鼠标即可,如图1-8所示。

图1-8 将子窗口拖离主窗口

图1-9 重新定位子窗口

如果希望把窗口重新放回到Visual Studio的主窗口中,只需要用鼠标按住窗口的标题栏将其拖回即可。如果计算机连接了多个显示器,也可以把窗口拖到另一个屏幕。

对于停靠栏中的窗口,也可以进行拖动。如图1-9所示,拖动“类视图”窗口时,在主窗口上会出现几个定位点,把窗口拖到对应的点上然后松开鼠标,窗口就放置到指定的位置上了。

1.3.5 自动隐藏窗口

许多子窗口的右上角会有个图钉图标,如果图钉呈现为垂直方向,表明窗口固定在主窗口中;如果图钉呈现为水平方向,则当窗口失去焦点后会自动隐藏到左右两侧或者上下两端的停靠栏中。固定窗口和自动隐藏窗口如图1-10所示,窗口两个状态间的切换也很简单,单击窗口右上角的图钉图标即可。

图1-10 固定窗口和自动隐藏窗口

1.3.6 巧用快速启动

Visual Studio的“快速启动”可以搜索菜单项、“选项”窗口中的选项及最近使用过的项目等内容。

“快速启动”搜索框位于标题栏的右侧,激活输入框的快捷键是Ctrl + Q。如果在标题栏的右侧没有看见输入框,那是因为“快速启动”功能被关闭了,可以通过以下方法开启。

(1)在菜单栏上依次执行【工具】→【选项】。

(2)在随即打开的“选项”窗口左上角的搜索输入框中输入“快速启动”,如图1-11所示。

(3)在搜索结果列表中单击“快速启动”。

(4)在右侧的设置页中选中“启用快速启动”,并勾选“启用以下提供程序”下面的全部列表项,如图1-12所示。

图1-11 输入搜索关键词

图1-12 开启“快速启动”功能

(5)单击“选项”窗口右下角的“确定”按钮保存设置。

接下来通过两个例子演示如何使用“快速启动”功能。

第一个例子是用“快速启动”搜索“类视图”菜单项,操作方法:在Visual Studio主界面上按下快捷键Ctrl + Q,这时输入焦点已经定位到标题栏右侧的输入框中,接着输入“类视图”,如图1-13所示。在搜索结果中单击“视图→类视图”,“类视图”窗口就打开了,如图1-14所示。

图1-13 选择搜索结果

图1-14 “类视图”窗口

接下来的例子是通过“快速启动”功能来直接定位“选项”中的“字体和颜色”设置项,操作方法:在Visual Studio的主界面上按下快捷键Ctrl + Q,这时输入焦点位于“快速启动”输入框中,然后输入“字体”,如图1-15所示,随后从搜索结果中选择“环境→字体和颜色”,就会打开“选项”窗口并自动定位到“字体和颜色”的设置节点上,如图1-16所示。

图1-15 输入搜索关键字

图1-16 自动定位到“字体和颜色”的设置节点

1.3.7 个性化设置

读者可以根据个人偏好去设置Visual Studio开发环境,所有的设置都在“选项”窗口中,在1.3.6节中已经使用过“选项”窗口了,接下来将演示如何更改几个较为常用的设置项。

1.选择颜色主题

这个选项不是很重要,不过也可以根据个人喜好来更改,在Visual Studio的菜单栏上依次执行【工具】→【选项】,打开“选项”窗口,从左侧的导航列表中找到“环境”→“常规”,然后在右侧的设置页面中的“颜色主题”的下拉列表中选择一种风格,可供选择的方案有蓝色、浅色和深色三种,如图1-17所示。

2.简化启动环境

在默认情况下,Visual Studio开发环境启动后显示起始页,并下载相关的新闻。其实很多时候可能不需要这些信息,因此可以设置Visual Studio启动为空环境,既能使界面更为简洁,也可以加快开发环境的启动速度。方法是依次执行菜单【工具】→【选项】,打开“选项”窗口,从左侧的导航栏中定位到“环境”→“启动”节点,然后在右侧的设置页面中“启动时”的下拉列表中选择“显示空环境”,如图1-18所示,并且取消“下载内容的时间间隔”的勾选,最后单击窗口右下方的“确定”按钮保存设置。

图1-17 选择颜色主题

图1-18 选择“显示空环境”

3.设置自动恢复

图1-19 设置自动保存的时间间隔

意外情况(如突然断电)有可能导致未保存的代码丢失,为了将损失降到最低,应该开启自动恢复功能。参照前面的方法(可以用前面提到的快速启动法)打开“选项”窗口,在导航列表中找到“环境”→“自动恢复”节点,随后在右侧的页面中选中“保存自动恢复信息的时间间隔”,如图1-19所示,并在下方输入一个合适的值,然后保存设置。推荐的时间不要短于5分钟,因为如果时间间隔太短,将频繁向硬盘写入数据,会影响硬盘的寿命。

4.设置字体和颜色

在“选项”窗口中导航到“环境”→“字体和颜色”,此处可以对不同代码编辑窗口中各类文本的字体和颜色进行设置,通常来说,修改最多的是字体大小,如图1-20所示,把字号调大一点,确保在编写代码时能看得更清楚。设置后可以在“示例:”下面看到即时效果,如果满意,则单击窗口右下方的“确定”按钮保存。

5.导入和导出设置

如果不小心把设置弄得很混乱,但又不知道如何恢复默认设置时可以考虑使用“导入和导出设置”,该功能既可以导入和导出设置信息,也可以用来重置所有设置项。

从菜单栏依次执行【工具】→【导入和导出设置…】(也可以在“快速启动”中输入“导入和导出设置”找到菜单项),随即打开“导入和导出设置向导”,如图1-21所示。

图1-20 修改字体大小

图1-21 “导入和导出设置向导”

(1)若要导出设置,选中“导出选定的环境设置”,单击“下一步”按钮;从“要导出哪些设置”下面选择要导出的内容,单击“下一步”按钮,如图1-22所示;接着为导出文件命名,并指定存放目录,如图1-23所示;然后单击“完成”按钮;最后单击“关闭”按钮,设置项就被导出到文件中了。

图1-22 选择要导出的内容

图1-23 指定文件名和保存位置

(2)若要导入设置,在“导入和导出设置向导”中选中“导入选定的环境设置”,如图1-24所示,并单击“下一步”按钮;然后向导询问是否备份当前设置,如果只希望用导入的设置覆盖当前设置,应选择“否,仅导入新设置,覆盖我的当前设置”,如图1-25所示。选择要导入的设置时,如果列表中没有所需要的设置,如图1-26所示,可以单击下方的“浏览”按钮选择设置数据文件,单击“下一步”按钮;接着选择需要导入的设置项,如图1-27所示。导入完成后关闭向导窗口即可。

图1-24 导入选定的环境设置

图1-25 覆盖当前设置

图1-26 选择要导入的设置

(3)重置所有设置,如果在使用过程中把设置修改得过于混乱,要手动改回到默认状态会相当麻烦,这时候不妨考虑重置所有设置项来恢复。如图1-28所示,在“导入和导出设置向导”首页选择“重置所有设置”,然后单击“下一步”按钮;如图1-29所示,如果不希望备份当前设置,可以选择“否,仅重置设置,从而覆盖我的当前设置”,再单击“下一步”按钮;因为现在使用的是C#语言来编写程序,因此应当选择重置为Visual C#开发环境集合,如图1-30所示;然后单击“完成”按钮,待处理完成后关闭向导窗口即可。

图1-27 选择要导入的设置项

图1-28 选择重置所有设置

图1-29 选择覆盖现有设置

图1-30 选择恢复为Visual C#环境设置

1.4 创建第一个应用程序

1.3节介绍了Visual Studio开发环境的使用,本节读者将有机会动手实践,创建第一个应用程序。本节练习的实例位于随书源代码目录下的\第1章\Example_1中,具体操作步骤如下:

(1)启动Visual Studio开发环境,依次执行【文件】→【新建】→【项目】,或者使用“快速启动”输入“新建项目”来激活菜单项,也可以按快捷键Ctrl + Shift + N激活菜单项。

(2)在“创建新项目”窗口中有三个下拉列表框,可用于筛选要创建的项目类型,如图1-31所示。

(3)在所有语言下拉列表中选择C#,在所有平台下拉列表中选择Windows,在所有项目类型下拉列表中选择“控制台”。

(4)在项目模板列中选择“控制台应用(.NET Core)”,如图1-32所示。

(5)单击窗口右下角的“下一步”按钮。然后输入项目名称、位置和解决方案名称,这些内容可以视实际情况而定,如项目名称输入Example_1,默认情况下,解决方案的名称和项目名称一致,这里仅按默认处理,不修改解决方案名称,如图1-33所示。

(6)单击窗口右下方的“创建”按钮,Visual Studio就开始创建项目。

图1-31 “创建新项目”窗口

图1-32 选择项目模板

应用程序项目创建完成后,默认情况下会打开Program.cs文件。C#代码文件的扩展名是.cs,即C Sharp的缩写,该扩展名的代码文件就是C#代码的源文件。其实它的本质就是一个文本文件,我们所编写的程序代码就是一系列文本内容而已,编译器把这些代码编译并生成应用程序(如可执行文件.exe)。

找到Main方法,把输入光标定位到左大括号后面,并按下Enter键。这时屏幕上的内容应与图1-34相似。

图1-33 输入项目与解决方案名称

图1-34 定位输入点

然后输入以下代码:

    Console.WriteLine("编程是一件快乐的事。");
    Console.Read();

输入时,要注意标点符号,如括号、引号、分号都需要使用英文标点,输入完成后,屏幕上的内容应与图1-35相似。

完成上述操作后代码编辑器的左侧有一段黄颜色的突出标记,如图1-36所示。

图1-35 输入C#代码

图1-36 左侧的突出标记

这段突出的标记告诉我们,哪些代码是读者自己输入的,Visual Studio所生成的代码是不带标记的,这样一来,读者就可以很轻松地知道自己写了哪些代码。而标记为黄色是在提醒开发者,输入的代码还没有保存到文件,如果这时突然关闭Visual Studio,那么刚才输入的代码就会丢失,只能重新写了。如果已经输入了大量的代码,不及时保存就会损失惨重。

单击工具栏上的“保存”按钮 ,会看到显示为黄色的标记变成了绿色,这表明输入的代码已经保存了,如图1-37所示。

至此,第一个应用程序已经完成了。要调试运行应用程序可以单击工具栏上的 按钮,或者按下快捷键F5。程序运行后会看到如图1-38所示的效果。

图1-37 代码已经保存

图1-38 运行后的效果

要退出正在运行的程序,除直接关闭程序外,还可以单击工具栏上的“停止调试”按钮 ,或者按下快捷键Shift + F5。

本例创建了一个非常简单的控制台应用程序,运行后会看到一个DOS窗口,然后在窗口上输出一串文本。

现在打开“解决方案资源管理器”窗口,查看一个应用程序项目都包含了哪些文件。如果“解决方案资源管理器”窗口已经停靠在Visual Studio的主界面中,可以直接单击将其展开;如果还没有打开,按下快捷键Ctrl + Q,然后输入“解决方案资源管理器”激活窗口。如图1-39所示,“解决方案资源管理器”显示了与项目有关的文件资源。

(1)“依赖项”节点主要列出当前项目引用了哪些程序集,包括开发者自己写的程序集、第三方组件和.NET自身的程序集(比如此项目中的Microsoft.NETCore.App)。开发者在代码中要调用哪个程序集的类型,都必须先引用该程序集(通过反射技术来调用可以不引用,后面会介绍)。

(2)前面介绍过,扩展名为.cs的文件是C#的源代码文件,上述的两行代码就是写在这个文件中的。将该节点展开,可以看到该文件所包含的代码中定义了哪些类型,如图1-40所示。上述的例子中,项目模板定义了一个Program类,类中定义了一个Main方法。

图1-39 解决方案资源管理器

图1-40 显示代码文件内部定义的类型

(3)除了核心的代码文件,根据项目的需要也可以包括其他文件,如资源文件、图像文件、音视频文件等。

1.5 解决方案与项目的关系

当人们需要解决一个非常复杂的问题时,只有一个应用程序项目是不够的。比如一个庞大的ERP系统,需要多人一起协作开发,每人负责一个项目模块,完成后把所有的项目合并为一个解决方案来发布。

因此,一个解决方案至少包含一个项目(当然也可以使用空的解决方案,但是没有实际意义),复杂的解决方案包含多个项目。

举个简单的例子,图1-41所示是一个加法计算器,要解决的问题是计算两个输入整数的和。该解决方案划分为两个项目,AddCalLib是一个类库,负责完成计算功能,MyApp是一个Windows窗体应用程序,它负责与用户交互(接收用户输入,向用户展示处理结果)。其中,MyApp项目为主项目,因为类库项目最后会生成一个.dll文件,.dll文件不能直接执行。用户运行MyApp项目生成的.exe文件会调用AddCalLib项目生成的.dll文件,来处理两个整数的相加运算。加法计算器的用户界面如图1-42所示。

图1-41 加法计算器解决方案

图1-42 加法计算器的用户界面

这里涉及“主项目”的概念,也称“启动项目”(为了与Visual Studio中的叫法一致,后文皆用启动项目),即当运行整个解决方案时首先启动的项目。通常,作为启动项目的应用程序应该是可执行的,如.exe文件,如果一个解决方案中所有项目都是类库(编译为.dll文件),都不能独立运行,则该解决方案就需要被其他能够独立运行的应用程序调用。

Visual Studio会把当前解决方案中最先创建的项目定义为启动项目,如上面提到的加法计算器的例子,由于先创建MyApp项目再创建AddCalLib项目,因此MyApp成为该解决方案的启动项目。启动项目在“解决方案资源管理器”中显示为粗体(字体加粗)。

但是问题又来了,比如有一个X解决方案,里面包含了A、B、C三个项目,如图1-43所示。由于在创建时,先创建了B项目,再创建A项目,最后创建C项目,在默认情况下,B项目就成为X解决方案的启动项目了(粗体显示),然而我们的初衷是希望A项目作为启动项目的,因此需要进行调整。

选中解决方案节点,单击“解决方案资源管理器”窗口工具栏上的 按钮(或者在解决方案节点上右击,从弹出的快捷菜单中选择【属性】,也可以按快捷键Alt + Enter)打开解决方案的属性设置窗口,从左边的导航列表中选择“通用属性”→“启动项目”,在窗口右侧区域选中“单启动项目”,并在列表框中选择A项目(如图1-44所示),最后单击窗口右下方的“确定”按钮保存。这时候A项目就成为启动项目了,项目名称会显示为粗体。

图1-43 X解决方案的结构

图1-44 设置启动项目 scabyuAvWhW/hOa3qvNPHmVGPUNygkfK0hLnJuwqWxaKyT6/3JqJNTR5ijl1gxt6

点击中间区域
呼出菜单
上一章
目录
下一章
×