2.2 初识C#程序结构
C#程序结构大体可以分为命名空间、类、Main()方法、标识符、关键字、语句和注释等。下面将对C#程序的结构进行详细的讲解。
2.2.1 命名空间
C#程序是利用命名空间组织起来的。命名空间既用作程序的“内部”组织系统,也用作向“外部”公开的组织系统(即一种向其他程序公开自己拥有的程序元素的方法)。如果要调用某个命名空间中的类或者方法,首先需要使用using指令引入命名空间,using指令将命名空间名所标识的命名空间内的类型成员导入当前编译单元中,从而可以直接使用每个被导入类型的标识符,而不必加上它们的完全限定名。
C#中,各命名空间就好像是一个存储了不同类型的仓库,using指令就好比一把钥匙,命名空间的名称好比仓库的名称,可以通过钥匙打开指定名称的仓库,从而在仓库中获取所需的物品。
using指令的基本形式如下。
using 命名空间名;
【例2.2】命名空间的彼此调用(实例位置:资源包\TM\sl\2\2)
创建一个控制台应用程序,建立一个命名空间MR.Data,在其中有一个类Model,在项目中使用using指令引入命名空间MR.Data,然后在命名空间MR.View中即可实例化命名空间MR.Data中的类Model,最后调用此类中的GetData()方法,代码如下。
程序的运行结果为“明日科技:https://www.mingrisoft.com/”。
2.2.2 类
类是一种数据结构,它可以封装数据成员、函数成员和其他的类。类是创建对象的模板。C#中所有的语句都必须位于类内。因此,类是C#语言的核心和基本构成模块。C#支持自定义类,使用C#编程就是编写自己的类来描述实际需要解决的问题。
类就好比医院的各个部门,如内科、骨科、脑科等,在各科室中都有自己的工作方法,相当于在类中定义的变量、方法等。如果要救治车祸重伤的病人,仅一个部门是不行的,可能要内科、骨科、脑科等多个部门一起治疗才行,这时可以让这几个部门临时组成一个小组,对病人进行治疗,这个小组就相当于类的继承,也就是该小组可以动用这几个部门中的所有资源和设备。
使用任何新的类之前都必须声明它,一个类一旦被声明,就可以当作一种新的类型来使用。在C#中使用class关键字来声明类,声明形式如下。
[类修饰符] class [类名] [基类或接口] { [类体] }
在C#中,类名属于标识符,必须符合标识符的命名规则,且要求能体现类的含义和用途。类名一般采用首字母大写的名词,也可以采用多个词构成的组合词。
例如,声明一个最简单的类(此类没有任何意义,只演示如何声明一个类),代码如下。
class MyClass { }
2.2.3 Main()方法
Main()方法是程序的入口点,C#程序中必须包含一个Main()方法,在该方法中可以创建对象和调用其他方法,一个C#程序中只能有一个Main()方法,并且在C#中所有的Main()方法都必须是静态的。C#是一种面向对象的编程语言,即使是程序的启动入口点,它也是一个类的成员。由于程序启动时还没有创建类的对象,因此,必须将入口点Main()方法定义为静态方法,使它可以不依赖于类的实例对象而执行。
Main()方法就相当于汽车的电瓶,在生产汽车时,将各个零件进行组装,相当于程序的编写。当汽车组装完成后,就要检测汽车是否可用,如果想启动汽车,就必须通过电瓶来启动汽车的各个部件,如发动机、车灯等,电瓶就相当于启动汽车的入口点。
默认的Main()方法代码如下。
static void Main(string[ ] args){}
说明
Main()方法默认访问级别为private。
Main()方法是一个特别重要的方法,使用时需要注意以下几点。
Main()方法是程序的入口点,程序控制在该方法中开始和结束。
Main()方法在类或结构的内部声明,它必须为静态方法,而且不应该为公共方法。
Main()方法可以具有void或int返回类型。
声明Main()方法时既可以使用参数,也可以不使用参数。
参数可以作为从零开始索引的命令行参数来读取。
可以用3个修饰符修饰Main()方法,分别是public、static和void。
2.2.4 标识符及关键字
1.标识符
标识符就是一个名字,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。
C#语言中规定,标识符由字母、下画线(_)和数字组成,并且第一个字符不能是数字。另外,标识符不能是C#中的保留关键字。
例如,_ID、name、user_age是合法的标识符,4word、string是非法的标识符。
注意,C#标识符中字母是严格区分大小写的,如good和Good是两个不同的标识符。
2.关键字
关键字是C#语言中已经被赋予特定意义的一些单词,不可以把这些关键字作为标识符来使用。大家经常看到的class、static和void等都是关键字。C#语言中的常用关键字如表2.1所示。
表2.1 C#常用关键字
2.2.5 输入与输出
在Hello World程序中输出“Hello World”字符串和定位控制台窗体的代码如下。
Console.WriteLine("Hello World"); //输出Hello World Console.ReadLine(); //定位控制台窗体
上面是两条最基本的C#语句,用来在控制台窗口中输出和读取内容,它们都用到了Console类。Console类表示控制台应用程序的标准输入流、输出流和错误流,该类中包含很多方法,但与输入输出相关的主要有4个方法,如表2.2所示。
表2.2 Console类中与输入输出相关的方法
其中,Console.Read()方法和Console.ReadLine()方法用来从控制台读入,区别如下。
Console.Read()方法:返回值为int类型,只能记录int类型的数据。
Console.ReadLine()方法:返回值为string类型,可将控制台中输入的任何数据存储为字符串类型数据。
说明
在开发控制台应用程序时,经常使用Console.Read()或Console.ReadLine()方法定位控制台窗体。
Console.Write()方法和Console.WriteLine()方法用来向控制台输出,区别如下。
Console.Write()方法:输出后不换行。
Console.WriteLine()方法:输出后换行。
例如,分别使用Console.Write()和Console.WriteLine()方法输出“Hello World”字符串,代码如下,效果如图2.4和图2-5所示。
Console.Write("Hello World"); Console.WriteLine("Hello World");
图2.4 使用Console.Write()方法输出“Hello World”字符串
图2.5 使用Console.WriteLine()方法输出“Hello World”字符串
注意
C#中,所有的字母、数字、括号以及标点符号均为英文输入法状态下的半角符号,不能是中文输入法或英文输入法状态下的全角符号。例如,图2.6为中文输入法分号引起的错误。
图2.6 中文输入法的分号引起的错误提示
2.2.6 注释
编译器编译程序时不执行注释的代码或文字,其主要功能是对某行或某段代码进行说明,方便对代码的理解与维护,这一过程就好像是超市中各商品的下面都附有价格标签,对商品的价格进行说明。注释可以分为行注释和块注释两种,行注释都以“//”开头。
例如,在“Hello World!”程序中使用行注释,代码如下。
如果注释的行数较少,一般使用行注释。对于连续多行的大段注释,则使用块注释,块注释通常以“/*”开始,以“*/”结束,注释的内容放在它们之间。
例如,在“Hello World!”程序中使用块注释,代码如下。
说明
注释可出现在代码的任意位置,但不能分隔关键字和标识符。例如,下面的代码注释是错误的:
static void //错误的注释 Main(string[] args)
编程训练(答案位置:资源包\TM\sl\2\编程训练\)
【训练3】模拟手机充值 在控制台应用程序中模拟以下场景。
计算机输出:欢迎使用×××充值业务,请输入充值金额:
用户输入:100
计算机输出:充值成功,您本次充值100元。
【训练4】输出百花园图案 使用C#在控制台中输出一个百花园图案。(提示:可以使用搜狗输入法中的字符画。)