C#从入门到精通(第4版)
上QQ阅读APP看书,第一时间看更新

2.2 初识C#程序结构

C#程序结构大体可以分为命名空间、类、Main方法、标识符、关键字、语句和注释等。下面将对C#程序的结构进行详细讲解。

2.2.1 命名空间

视频讲解:光盘\TM\lx\2\02命名空间.mp4

C#程序是利用命名空间组织起来的。命名空间既用作程序的“内部”组织系统,也用作向“外部”公开的组织系统(即一种向其他程序公开自己拥有的程序元素的方法)。如果要调用某个命名空间中的类或者方法,首先需要使用using指令引入命名空间,using指令将命名空间名所标识的命名空间内的类型成员导入当前编译单元中,从而可以直接使用每个被导入的类型的标识符,而不必加上它们的完全限定名。

C#中的各命名空间就好像是一个存储了不同类型的仓库,而using指令就好比是一把钥匙,命名空间的名称就好比仓库的名称,可以通过钥匙打开指定名称的仓库,从而在仓库中获取所需的物品。

using指令的基本形式为:

        using 命名空间名;

【例2.2】创建一个控制台应用程序,建立一个命名空间N1,在命名空间N1中有一个类A,在项目中使用using指令引入命名空间N1,然后在命名空间Test02中即可实例化命名空间N1中的类,然后调用此类中的Myls方法,代码如下。(实例位置:光盘\TM\sl\2\2)

        using N1;                                    //使用using指令引入命名空间N1
        namespace Test02
        {
            class Program
            {
              static void Main(string[] args)
              {
                  A oa=new A();                      //实例化N1中的类A
                  oa.Myls();                         //调用类A中的Myls方法
              }
            }
        }
        namespace N1                                 //建立命名空间N1
        {
            class A                                  //实例化命名空间N1中的类A
           {
              public void Myls()
              {
                 Console.WriteLine("用一生下载你");    //输出字符串
                 Console.ReadLine();
              }
           }
       }

程序的运行结果为“用一生下载你”。

2.2.2 类

视频讲解:光盘\TM\lx\2\03类.mp4

类是一种数据结构,它可以封装数据成员、函数成员和其他的类。类是创建对象的模板。C#中所有的语句都必须位于类内。因此,类是C#语言的核心和基本构成模块。C#支持自定义类,使用C#编程就是编写自己的类来描述实际需要解决的问题。

类就好比医院的各个部门,如内科、骨科、泌尿科、眼科等,在各科室中都有自己的工作方法,相当于在类中定义的变量、方法等。如果要救治车祸重伤的病人,光是一个部门是不行的,可能要内科、骨科、脑科等多个部门一起治疗才行,这时可以让这几个部门临时组成一个小组,对病人进行治疗,这个小组就相当于类的继承,也就是该小组可以动用这几个部门中的所有资源和设备。

使用任何新的类之前都必须声明它,一个类一旦被声明,就可以当作一种新的类型来使用,在C#中通过使用class关键字来声明类,声明形式如下。

        [类修饰符]  class  [类名]  [基类或接口]
        {
            [类体]
        }

在C#中,类名是一种标识符,必须符合标识符的命名规则。类名要能够体现类的含义和用途。类名一般采用第一个字母大写的名词,也可以采用多个词构成的组合词。

【例2.3】 声明一个最简单的类,此类没有任何意义,只演示如何声明一个类,代码如下。

        classMyClass
        {
        }

闯关训练:在C#程序中定义一个名称为“Car”的表示汽车的类。

2.2.3 Main方法

视频讲解:光盘\TM\lx\2\04 Main方法.mp4

Main方法是程序的入口点,C#程序中必须包含一个Main方法,在该方法中可以创建对象和调用其他方法,一个C#程序中只能有一个Main方法,并且在C#中所有的Main方法都必须是静态的。C#是一种面向对象的编程语言,即使是程序的启动入口点,它也是一个类的成员。由于程序启动时还没有创建类的对象,因此,必须将入口点Main方法定义为静态方法,使它可以不依赖于类的实例对象而执行。

Main方法就相当于汽车的电瓶,在生产汽车时,将各个零件进行组装,相当于程序的编写。当汽车组装完成后,就要检测汽车是否可用,如果想启动汽车,就必须通过电瓶来启动汽车的各个部件,如发动机、车灯等,电瓶就相当于启动汽车的入口点。

可以用3个修饰符修饰Main方法,分别是public、static和void。

public:说明Main方法是共有的,在类的外面也可以调用整个方法。

static:说明方法是一个静态方法,即这个方法属于类的本身而不是这个类的特定对象。调用静态方法不能使用类的实例化对象,必须直接使用类名来调用。

void:此修饰符说明方法无返回值。

2.2.4 标识符及关键字

视频讲解:光盘\TM\lx\2\05标识符及关键字.mp4

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 C#语句

视频讲解:光盘\TM\lx\2\06 C#语句.mp4

语句是构造所有C#程序的基本单位。语句可以声明局部变量或常数、调用方法、创建对象或将值赋给变量、属性或字段,语句通常以分号终止。

【例2.4】下面的代码就是一条语句。

        Console.WriteLine("Hello World! ");

此语句便是调用Console类中的WriteLine方法,输出指定的字符串“Hello World! ”。

互动练习:尝试使用C#根据经纬度模仿船体的航行轨迹,具体要求为:将GPS获取到的经纬度信息保存到文本文件中,然后从该文本文件中读取信息,并根据读取到的信息,使用GDI+绘制航行轨迹图。

2.2.6 注释

视频讲解:光盘\TM\lx\2\07注释.mp4

编译器编译程序时不执行注释的代码或文字,其主要功能是对某行或某段代码进行说明,方便对代码的理解与维护,这一过程就好像是超市中各商品的下面都附有价格标签,对商品的价格进行说明。注释可以分为行注释和块注释两种,行注释都以“//”开头。

【例2.5】在“Hello World! ”程序中使用行注释,代码如下。

        static void Main(string[] args)                          //程序的Main方法
        {
            Console.WriteLine("Hello World!");                  //输出“Hello World!”
            Console.ReadLine();
        }

如果注释的行数较少,一般使用行注释。对于连续多行的大段注释,则使用块注释,块注释通常以“/*”开始,以“*/”结束,注释的内容放在它们之间。

【例2.6】在“Hello World! ”程序中使用块注释,代码如下。

        /*程序的Main方法中可以输出“Hello World!”字符串       //块注释开始
        static void Main(string[] args)                  //Main方法
        {
          Console.WriteLine("Hello World!");            //输出“Hello World!”字符串
          Console.ReadLine();
        }
        */                                               //块注释结束

注意 注释可以出现在代码的任意位置,但是不能分隔关键字和标识符。例如,下面的代码注释是错误的:

         static void  //错误的注释Main(string[] args)

闯关训练:创建一个控制台应用程序,为代码添加著作权信息的注释,包括开发日期、作者、代码的作用等。