C# 命名空间
(Namespace)
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。
我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。
定义命名空间
命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称:
namespace namespace_name { // 代码声明 }
为了调用支持命名空间版本的函数或变量,会把命名空间的名称置于前面,如下所示:
namespace_name.item_name;
////8.15 命名空间 namespace SpaceA { class Cla { public void method() { Console.WriteLine("SpaceA.Cla.method()"); } } } namespace SpaceB { class Cla { public void method() { Console.WriteLine("SpaceB.Cla.method()"); } } } class Twentieth { /**/ public static void run() { SpaceA.Cla cla = new SpaceA.Cla(); cla.method(); SpaceB.Cla clb = new SpaceB.Cla(); clb.method(); } }
SpaceA.Cla.method()
SpaceB.Cla.method()
using 关键字
using 关键字表明程序使用的是给定命名空间中的名称。例如,我们在程序中使用 System 命名空间,其中定义了类 Console。我们可以只写:
Console.WriteLine ("Hello there");
我们可以写完全限定名称,如下:
System.Console.WriteLine("Hello there");
您也可以使用 using 命名空间指令,这样在使用的时候就不用在前面加上命名空间名称。该指令告诉编译器随后的代码使用了指定命名空间中的名称。
using SpaceB; Cla clb = new Cla(); clb.method();
嵌套命名空间
命名空间可以被嵌套,即您可以在一个命名空间内定义另一个命名空间,如下所示:
namespace namespace_name1 { // 代码声明 namespace namespace_name2 { // 代码声明 } }
访问内部命名空间
namespace_name1.namespace_name2
using的用法:
1. using指令:引入命名空间
这是最常见的用法,例如:
using System; using Namespace1.SubNameSpace;
2. using static 指令:指定无需指定类型名称即可访问其静态成员的类型
using static System.Math;var = PI; // 直接使用System.Math.PI
3. 起别名
using Project = PC.MyCompany.Project;
4. using语句:将实例与代码绑定
using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f)) { // Use font3 and font4. }
代码段结束时,自动调用font3和font4的Dispose方法,释放实例。