C#程序设计自学经典
上QQ阅读APP看书,第一时间看更新

1.7 应用程序结构

学习了编译和运行C#控制台应用程序之后,下面将对应用程序结构做简要的介绍。

1.7.1 控制台应用程序文件夹结构

以上一例子来说,在建立项目时,Visual Studio已经在“F:\项目\练习小程序\C#\”文件夹下创建了一个与ConsoleHelloWorld项目同名的文件,此文件夹被叫作解决方案文件夹,解决方案和项目都是Visual Studio提供的有效管理应用程序的容器,一个解决方案可以包含一个或多个项目。在ConsoleHelloWorld文件夹下有一个名为ConsoleHelloWorld.sln的文件,此文件为Visual Studio的解决方案文件,还有一个与解决方案同名的文件夹,此文件夹为项目文件夹。在项目文件夹中包含比较重要的文件夹——bin文件夹,此文件夹下用于存放Visual Studio编译后生成的可执行文件等。此外,还有一个名为Program.cs的文件,该文件是项目的入口文件(启动文件),该文件中定义了项目的启动入口(Main()方法),在C#中程序的源文件以.cs作为扩展名。

Visual Studio提供了一个叫“解决方案资源管理器”的窗口,在这里可以管理解决方案中包含的所有文件。如图1-19所示,单击解决方案资源管理器中的“显示所有文件”按钮,就可以看到解决方案下的程序结构了。

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

1.7.2 C#程序结构

C#程序结构大致可分为注释、命名空间、类、Main方法等。还以上述例子来说,下面就由外向内分析上述代码。

1.using关键字与namespace关键字

C#中using关键字用来引入其他命名空间,它的作用与Java中的import类似。最上面5条using语句在模板生成时Visual Studio就已经自动添加了。

C#程序中组织代码是用namespace(命名空间)的形式来实现的,通过命名空间来分类,以区别不同的代码功能,同时也是VS.NET中所有类的完全名称的一部分。如果要调用某个命名空间中的类或方法,首页需要使用using指令引入相应的命名空间,从而可以直接使用每个被导入的类型的标识符,而不必加上它们的完全限定名。

2.class关键字

class关键字表示类,类是一种数据结构,C#中所有的语句都必须位于类内。所以,类是C#语言的核心和基本构成模块。类要包含在一个命名空间中,在创建项目时Visual Studio自动创建了一个名为Program的类。在Main方法中使用的Console类表示控制台应用程序的标准输入流、输出流和错误流。此类不能被继承。它的属性、方法与事件如表1-1所示。

表1-1 Console类的属性、方法与事件

续表

续表

续表

3.Main方法

Main方法是程序的入口方法,C#控制台程序中必须包含且只能包含一个Main方法,并且Main方法必须为静态方法(即必须使用static修饰符),C#是面向对象的编程语言,静态方法可以不依赖于类的实例对象而执行,这样才能在程序启动还没有创建类的对象时被执行了。在该方法中可以创建对象和调用其他方法等。

Main方法有如下4种形式。

    static void Main (string[] args){}
    static int Main (string[] args){}
    static void Main (){}
    static int Main (){}

可以根据自己的需要进行选择使用。

4.注释

注释是用来对某行或某段代码进行说明,方便日后对代码的维护。编译器编译程序时不执行注释的代码和文字。由于软件的复杂性以及不可预知性,所以在程序当中添加注释是一个非常明智的选择,尤其是在团队开发当中,可以使自己的程序更加适于阅读。

C#中注释分为如下三种。

(1)单选注释:使用“//”进行注释,只可注释一行。

(2)多行注释:以“/*”开始,“*/”为结束,中间部分为要注释的内容。

(3)文档注释:使用“///”进行注释,此注释在类或方法前面,连续输入三个“/”,用于对类和方法进行注释。

为上例代码添加注释,添加注释后的代码如下。

    /*
     此程序演示了使用Console输出Hello World!字符串
     此程序的重点在于Console类的使用
     */
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleHelloWorld
    {
        class Program
        {
            /// <summary>
            /// 我是程序的入口方法
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");  //输出Hello World!
                Console.ReadLine();                 
            }
        }
    }

运行效果与未添加注释时效果相同。