打开网易新闻 查看精彩图片

编程语言的代码真正的作用是一系列的指令,我们依照一定的规则去编写对应的代码,当点击生成解决方案后,Visual Studio会依据我们编写的指令生成对应的程序。

打开网易新闻 查看精彩图片

这里我们可以看到,我们正在操作的是Program.cs这个文件,这里的.cs便是C#文件的扩展名。

Hello World代码的基本结构是:

打开网易新闻 查看精彩图片

我们观察代码会发现,这里的代码是分层级的

其中using System自己是一层

其余的代码包含在namespace ConsoleApp中属于namespace ConsoleApp这一层

在namespace ConsoleApp中,也包含着 Class Program层和static void Main层,不同的层级用{}来区分。

从层级关系可以看出,代码是有从属关系的,这里的代码有两大从属关系,using System是一个单独的关系,namespace ConsoleApp是另一个关系。

简单解释一下,其实这里using System和namespace ConsoleApp是两个命名空间,其中System和ConsoleApp便是命名空间的名称,System这个命名空间是别人写的,ConsoleApp这个命名空间是我们写的,当然System源代码中也会像我们写ConsoleApp一样里面包含着一堆的代码。

这里的using意思是引用命名空间的意思,using System连起来意思是将要在当前的代码中引用System这个命名空间中的代码。

namespace的意思是声明命名空间,namespace ConsoleApp意思是在当前的位置声明ConsoleApp这个命名空间

两部分合起来就是在告诉Visual Studio我现在要引用别人写的代码,并且开始写自己的代码

但是问题来了,我们为什么要用别人的代码,在哪里用了?我们向下继续看。

在ConsoleApp中我们继续声明了一个Program结构,并在这个结构中又声明了一个Main结构。

其中Program叫做类,Main叫做入口函数。

之所以叫做入口函数,意思是程序运行时候,第一个运行的地方,比如我们复制一份代码命名为Main2,并且将对应位置修改成Hello World2,保存后再次运行程序。将会看到还是执行Main中的代码。

打开网易新闻 查看精彩图片

这时候我们突发奇想,如果复制两份相同的Main函数会发生什么

这时我们会发现,第二个Main函数下面出现了红色的波浪线,并且提示框出现了红色的报错提示

打开网易新闻 查看精彩图片

点击运行后,也同样报错。

打开网易新闻 查看精彩图片

但是如果我们将程序中的Main改成Main2,也就是让程序中的Main函数消失,会有怎样的效果

打开网易新闻 查看精彩图片

这时候,程序同样报错

打开网易新闻 查看精彩图片

这说明,一个程序中必须有,且只能有一个Main入口函数。

但是这时候我们又想到,Main函数的上层结构的名称一定要是Program吗,于是我们将Program修改成hello,点击运行。

这时我们发现,修改Program并不影响程序的运行

打开网易新闻 查看精彩图片

也就是说,程序的运行首要的是找到Main函数,至于Main函数被包含在哪个类中并不重要,重要的是一定要有,并且只有一个。

这时候,我们依葫芦画瓢,Program中复制一份Main 并改名为hello,并且在ConsoleApp中复制一份Program并改名为hello并将其中的Main改名为Main2,后点击运行

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

我们看到,程序正常运行没有报错,至此可以总结出,一个命名空间中可以有多个类,一个类中可以有多个函数。

我们继续看函数中的内容。

之前我们介绍,函数中的两句话:

Console.WriteLine(“Hello World”); 意思是输出Hello world

Console.ReadKey(); 意思是等待用户输入

但是问题来了,向屏幕输出和等待用户输入这两个动作不是我们编写的,我们只是在对应编码位置,填入了对应动作的编码而已,那对应动作的编码的来源是哪里呢?

其实这里就应用到了之前的System, Console.WriteLine(“Hello World”)的完整写法其实应当是System.Console.WriteLine(“Hello World”);

当我们将代码的完整写法填入代码区域的时候会发现,代码正常运行。

打开网易新闻 查看精彩图片

这也就是我们之前提出的概念,我们在自己的编码中引用了别人的代码。

在C#编程过程中,经常会出现这样的情况,其实C#这门语言存在了这么长的时间,已经有很多人完善了对应的基础功能,所以我们在编写自己的程序过程中,不需要再去浪费时间编写基础功能,直接引用就好了。

但是,这里我们又产生了疑问,那么什么时候使用代码的完整的格式,什么时候可以用简写格式呢?这时我们可以将代码还原成无System的格式,并且删除开始的using System

可以看到代码的Console位置直接出现了红色的下划线

打开网易新闻 查看精彩图片

并且点击运行后,也报错

打开网易新闻 查看精彩图片

但是如果在对应位置添加上System.后所有的代码便正常了

打开网易新闻 查看精彩图片

猜测,是否是代码的完整格式和using有关。

其实这里便是C#的代码引用规则,当不同命名空间中相互使用代码的时候,最直接的方式便是[命名空间.类名.方法名]的方式进行直接引用。

但是如果引用的次数很多,而且对应的命名空间名称很长不利于代码的编写和维护,所以直接在代码的最开始用[using 命名空间名]的方式告诉Visual Studio 我要在当前的代码中引用对应命名空间的方法啦,那么接下来在当前的命名空间中便可以用方法的简写方式引用啦。

至此,我们简单介绍了这个世界级程序的基本代码结构:

1、在代码的最开始,我们告诉Visual Studio当前的命名空间要引用System中的代码

2、告诉Visual Studio我创建了一个自己写代码的空间,名字为ConsoleApp

3、在ConsoleApp中创建了一个类名字为Program,并在Program中声明了一个入口函数Main,填写了两个动作,一个是输出Hello World,一个是等待用户输入