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)。