using指令都用了这么多年了,其实还真没懂!

在C语言中,我们经常使用#include<stdio.h>指令来导入标准输入输出库,这确实很好理解,相当于把代码复制到当前的程序中。

但在C#语言中,当我们写Console程序时,经常在第一行导入System命名空间

 1 using System;
 2 
 3 namespace HelloWorld
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             Console.WriteLine("Hello World!");
10         }
11     }
12 }

 问题来了,这个命名空间导入到哪里去了?但肯定不是把System命名空间的代码复制到第一行来,不懂。。。

做个小改动,把using System;这个指令移动到HelloWorld这个命名空间中,如下:

 1 namespace HelloWorld
 2 {
 3     using System;
 4     class Program
 5     {
 6         static void Main(string[] args)
 7         {
 8             Console.WriteLine("Hello World!");
 9         }
10     }
11 }

使用dotnet run运行如下:

神奇的发现,居然可以正常的运行。在这里,using System; 指令把System命名空间导入到HelloWorld这个命名空间,然后HelloWorld中的类,都可以使用System命名空间中的类,都像使用HelloWorld命名空间自己定义的类一样。

总结,在一个源程序文件的头几行导入的命名空间(如System),指的是,在当前源程序文件中,向所有的命名空间(如HelloWorld),都导入该命名空间(如System)。

 

posted @ 2017-12-05 23:00  双健  阅读(998)  评论(0编辑  收藏  举报