C#程序设计任务式教程
上QQ阅读APP看书,第一时间看更新

1.2 编写控制台应用程序的相关知识

1.2.1 C#简介

C#语言(发音为C sharp)是微软公司于2000年6月发布的一款面向对象的高级程序设计语言。它是一种安全、稳定、简洁的编程语言,由C、C++衍生而来,继承了C++语言的强大功能,并简化了C++语言在命名空间、类、方法重载等方面的操作。它摒弃了C++语言中的多继承、宏等复杂特性,更安全,更易使用。熟悉C、C++语言的程序员可以很快地转向C#程序开发。

C#运行于微软的.NET平台之上,Microsoft.NET提供了一系列的工具和服务,使得程序员可以高效率地开发各种基于Microsoft.NET平台的应用程序。使用C#能编写Windows应用程序、Web应用程序和移动应用程序等。

C#语言具有语法简洁、面向对象程序设计、与Web紧密结合、基于.NET Framework等特点。

1.2.2 .NET平台

.NET是微软新一代技术平台,该平台允许.NET应用程序通过Internet进行通信和数据共享,而不管所采用的是哪种操作系统、设备或者编程语言。编程语言主要有Visual C#、Visual Basic.NET、Visual C++.NET、Visual J#等。

.NET Framework(.NET框架),是新一代的集成开发框架,语言扩展性强,也能生成中间语言代码移植到不同操作系统平台上运行。

.NET Framework包括两个重要组件:CLR(Common Language Runtime,公共语言运行库)和.NET Framework类库(包括ADO.NET、WinForms、ASP.NET和WPF)。通过.NET Framework可以编写出Windows应用程序、Web应用程序及Web服务等。

一个.NET应用程序是一个使用.NET Framework类库编写,并运行于CLR(公共语言运行库)系统之上的应用程序。

1.2.3 开发环境

开发C#应用程序,本书采用的是Visual Studio 2013集成开发环境。Microsoft Visual Stu-dio 2013是微软公司于2013年推出的一套先进的软件开发解决方案,通过Visual Studio Ulti-mate 2013可以开发出各种优秀的应用程序。Visual Studio 2013提供了多种强大的工具和服务,而且方便易用。

1.安装Visual Studio 2013

完全安装Visual Studio 2013需要10.23GB的空间,所以在安装之前首先要确定计算机安装目录下有足够的硬盘空间。

双击鼠标运行Visual Studio 2013软件的安装程序,将出现安装程序的提示界面,如图1-1所示。在界面中选中“我同意许可条款”复选框,则进入图1-2所示的安装界面中,单击“下一步”按钮。

图1-1 Visual Studio 2013安装提示界面

图1-2 Visual Studio 2013安装界面

在“要安装的可选功能”界面中,如图1-3所示,单击“安装”按钮,安装程序开始加载安装组件,需要耐心等待,直到软件安装完毕,如图1-4所示,单击“立即重新启动”按钮即可。

图1-3 “要安装的可选功能”界面

图1-4 “安装已完成”界面

2.集成开发环境介绍

启动Visual Studio 2013后,单击“文件”菜单中的“新建”命令,在子菜单中选择“项目”命令,弹出“新建项目”对话框,如图1-5所示。在对话框左侧“模板”选项中,选择“Visual C#”,在中间列表中选择应用程序选项。在对话框下方的项目“名称”输入框中输入项目名,并通过“浏览”按钮输入项目的创建“位置”。

图1-5 “新建项目”对话框

单击“确定”按钮进入Visual Studio 2013集成开发环境的编辑页面,开发环境包括菜单栏、工具栏、代码编辑器、窗体设计器、工具箱、解决方案资源管理器、属性窗口、错误列表窗口、输出窗口等,如图1-6所示。

图1-6 Visual Studio 2013集成开发环境

(1)菜单栏

菜单栏中菜单项目众多。项目不同、文件类型不同,都会使得菜单栏中的菜单项目发生动态变化。程序开发中的绝大部分功能,基本上都可以通过菜单项来完成。

程序开发过程中所需要的窗口、工具栏等,可以通过“视图”菜单中的相关命令来使其显示。

(2)工具栏

工具栏中,将菜单中常用命令以图标形式显示出来,便于使用,是菜单栏的快捷操作方式。工具栏中的图标是可以通过“工具”菜单中的“自定义”命令进行设置的。

(3)代码编辑器

代码编辑器窗口用于编辑代码的界面,在代码编辑器中,输入设计编写好的程序代码后,可对文件进行保存。要注意养成边做边存的好习惯。

(4)错误列表窗口

编辑好代码之后,要对程序进行编译和运行,如果程序中存在错误,则在“错误列表”窗口中显示错误的详细说明,如图1-7所示。

图1-7 “错误列表”窗口

(5)输出窗口

这个窗口用于输出编译的信息,包括出错信息和警告信息。

(6)工具箱

在编写窗体程序时使用,并通过分组显示的方式提供窗体控件,在每个分组中以字母顺序排列控件。C#窗体应用程序开发环境如图1-8所示。

图1-8 窗体程序开发环境

(7)解决方案资源管理器

在C#程序中,一个解决方案里面可以包含多个项目,每个项目又包含多个文件,可以通过解决方案资源管理器窗口查看、打开、编辑C#文件。

(8)属性窗口

属性窗口在编写Windows应用程序和Web应用程序时尤其重要,主要用于设置项目中控件等元素的属性特征。

1.2.4 解决方案和项目

在.NET中,解决方案是管理各个项目的,一个解决方案里面可以包含一个或者多个不同类型的项目。一般添加的项目类型主要有以下几种:Windows窗体应用程序、WPF应用程序、控制台应用程序、Web应用程序和类库等。

项目是解决方案的下一级,在“新建项目”时,要同时设置“解决方案”,根据需要可以选择“新建新解决方案”或者选择“添加到解决方案”,如图1-9所示。在默认情况下,项目名称、项目文件夹名称、程序集名称、解决方案名称等都是相同的。

图1-9 “新建项目”对话框

创建解决方案时系统会生成一个解决方案文件夹,在默认情况下解决方案名称与解决方案的文件夹名称相同。

1.2.5 C#程序基本结构

下面通过【例1-1】介绍C#程序的基本结构。

【例1-1】在显示器上显示一行信息:欢迎进入C#世界!

程序运行效果图,如图1-10所示。

图1-10 【例1-1】程序运行效果图

程序源代码如下:

1.命名空间

在【例1-1】程序中,第一行程序语句,通过using将System命名空间导入,这样当前程序就可以直接访问System命名空间中所有类的操作,而不需要重新编写代码。

C#程序是用命名空间来组织代码的,在【例1-1】程序中,第二行代码,通过关键字namespace定义了命名空间ConsoleApplication1,命名空间ConsoleApplication1包含了Program类。

2.类

C#程序由一个或多个类组成,类由关键字class定义,类包含了程序使用的数据和方法声明。类一般包含多个方法。方法定义了类的行为。在【例1-1】中,Program类只有一个Main( )方法。

类定义由类头部分和类体部分组成,类体部分以“{”开始,以“}”结束。

3.Main( )方法

方法类似于函数,用以完成特定的功能。在【例1-1】中定义了一个Main( )方法。任何一个C#应用程序,都必须有一个Main( )方法,Main( )方法是整个应用程序的入口,程序执行总是从Main( )方法开始的。Main( )方法对于C#程序来讲,是必需的,也是唯一的。方法的执行从“{”开始,到“}”结束。

4.程序语句

Main( )方法通过语句“Console.WriteLine("欢迎进入C#世界!");”指定了它的行为。

WriteLine( )是一个定义在System命名空间中的Console类的一个输出方法。该语句的功能是在控制台屏幕上输出显示字符串消息“欢迎进入C#世界!”。

在C#中,用“;”表示程序语句的结束。任何一个语句都是以分号结束的,所以在一行上可以写多条语句,每个语句以分号结束即可。为使程序更具可读性,一般都是一行写一条语句,不能把一条语句分多行写。使用大括号“{”和“}”表示代码块的开始和结束,大括号必须成对使用,可以嵌套。

C#代码区分大小写,例如Console.WriteLine与console.writeLine是不同的。

书写程序代码,如图1-11所示,必须注意书写规范,恰当地使用缩进显示程序段。

图1-11 程序代码书写规范

而图1-12所示书写程序代码,虽然程序运行正常,但是程序的可读性差。

图1-12 程序代码书写混乱

5.注释语句

在C#程序中,为了提高程序的可读性,常常要给程序适当地添加注释语句,注释语句不被编译器编译,也不被执行。常用的有三种注释语句。

1)单行注释:以左双斜杠“//”开始,以行末结束。

2)多行注释:在要注释的多行前后加上“/*”和“*/”。

3)对方法、属性等的说明注释符“///”,可以对属性、方法、类进行说明,也可以对方法的参数进行说明,以后调用该方法时,系统会自动提示方法的参数情况,效果如图1-13所示。

图1-13 方法参数说明

1.2.6 控制台输入输出类:Console

Console类,是命名空间System中处理控制台输入流、输出流的类,通过这个类可以实现控制台读写操作的基本功能。

1.控制台输出

在C#中,如果控制台程序运行时需要通过显示器输出数据,则可以通过Console类的WriteLine( )和Write( )方法来实现。

Console.WriteLine(参数)方法的作用,是将数据输出到控制台,而且输出后换行。Console.Write(参数)方法,将数据输出到控制台后,不换行,光标停留在所输出信息的末尾。Console类是System命名空间的成员,在程序开头需要通过“using System”导入命名空间,否则使用时必须指定System命名空间,语法如下所示:

System.Console.WriteLine(参数);

WriteLine( )方法十分有用,在编写控制台应用程序时会经常用到它。

【例1-2】编写控制台程序,显示个人信息。

程序运行效果图,如图1-14所示。

图1-14 【例1-2】程序运行效果图

程序源代码如下:

在【例1-2】中,显示器上输出4行信息,其中第一行“个人信息:”的输出是由Write-Line( )方法控制,所以数据单独占一行,信息输出后,光标另起一行;而Write( )方法输出后不换行,所以第三行数据“姓名:”输出后不换行,光标停留在输出信息末尾,所以其后的语句“Console.WriteLine("王小明");”的输出“王小明”与“姓名:”显示在同一行。

如果需要显示若干个项,则使用数据占位符,{0}表示第一项,{1}表示第二项,以此类推。

【例1-3】编写控制台程序,显示用户姓名及年龄两项数据。

程序运行效果图,如图1-15所示。

图1-15 【例1-3】程序运行效果图

程序源代码如下:

在【例1-3】中,定义了字符串变量name,用于存储字符串类型数据“王小明”,定义了整型变量age,存储年龄19,语句“Console.WriteLine("{0}今年{1}岁。",name,age);”通过{0}、{1}两个数据占位符将一一对应地输出变量name和age中的值。

2.控制台输入

在C#控制台应用程序中,有两种方法实现用户输入所需数据,ReadLine( )和Read( )方法。ReadLine( )方法用于读取一行数据,该方法一直读取字符,一次读取一行字符的输入,直到用户按下〈Enter〉键,然后将用户输入的字符串返回到string字符串类型的对象中。

要读取单个字符,则使用Read( )方法,该方法一次只能从输入流中读取一个字符,并且直到用户按下〈Enter〉键才表示输入结束,此方法的返回值是一个表示输入字符的整数int类型,所以要显示字符就必须转换为char类型。

【例1-4】询问用户姓名及等级,并输出信息。

程序运行效果图,如图1-16所示。

图1-16 【例1-4】程序运行效果图

程序源代码如下:

在【例1-4】中,执行语句“Console.Read( );”时,如果用户输入了多个字符,然后按〈Enter〉键,Read( )方法只返回第一个字符。

1.2.7 编译执行机制

传统的程序设计语言,如VB、C、C++等,通过系统编译器编译生成目标程序,然后再通过系统链接生成可执行程序,而后程序代码被运行。例如使用C语言编写的源程序.c文件,通过编译后生成.obj目标文件,然后通过链接生成.exe可执行程序,而后程序被运行。C语言程序编译运行机制如图1-17所示。

图1-17 C语言程序编译运行机制

在.NET开发平台下,不论使用哪种语言(如C#、VB.NET、J#等)编写的.NET源程序,首先都将被编译成MSIL(Microsoft Intermediate Language,微软中间语言)代码,MSIL是一种低级语言,定义了一系列与CPU类型无关的可移植指令集,可以快速地转换为内部机器码。使用MSIL中间语言代码,不仅可以实现平台无关性,还支持语言的互操作性。JIT(Just In Time,即时编译器)确切地知道程序运行在什么类型的处理器上,并负责将MSIL代码编译成目标机器代码。而后由CLR管理.NET应用程序的运行。CLR提供内存管理、线程管理、远程管理等服务,并保障程序代码的安全性和可靠性。例如使用C#语言编写的.NET应用程序的编译运行机制如图1-18所示。

图1-18 C#语言程序编译运行机制