命名空间在 C# 中的作用
命名空间设计用于提供一种方法来保持一组名称与另一组名称分开。在一个命名空间中声明的类名不会与在另一个命名空间中声明的相同类名冲突。
定义命名空间
命名空间定义以关键字 namespace
开头,后面跟着命名空间的名称,如下所示:
namespace namespace_name {
}
为了调用命名空间启用的版本的功能或变量,可以在功能或变量名称前加上命名空间名称,如下所示:
namespace_name.item_name;
以下程序演示了命名空间的使用:
using System;
namespace first_space {
class namespace_cl {
public void func() {
Console.WriteLine("Inside first_space");
}
}
}
namespace second_space {
class namespace_cl {
public void func() {
Console.WriteLine("Inside second_space");
}
}
}
class TestClass {
static void Main(string[] args) {
first_space.namespace_cl fc = new first_space.namespace_cl();
second_space.namespace_cl sc = new second_space.namespace_cl();
fc.func();
sc.func();
Console.ReadKey();
}
}
当以上代码被编译和执行时,会产生如下结果:
Inside first_space
Inside second_space
使用关键字
using
关键字表示程序正在使用给定命名空间中的名称。例如,在我们的程序中,我们正在使用 System
命名空间。Console
类是在那里定义的。我们只需要写:
Console.WriteLine ("Hello there");
我们可以写出完全限定的名称:
System.Console.WriteLine("Hello there");
您还可以使用 using namespace
指令来避免在前面加上命名空间。此指令告诉编译器后续代码正在使用指定命名空间中的名称。命名空间对于以下代码是隐含的:
让我们改写前面的例子,带有 using
指令:
using System;
using first_space;
using second_space;
namespace first_space {
class abc {
public void func() {
Console.WriteLine("Inside first_space");
}
}
}
namespace second_space {
class efg {
public void func() {
Console.WriteLine("Inside second_space");
}
}
}
class TestClass {
static void Main(string[] args) {
abc fc = new abc();
efg sc = new efg();
fc.func();
sc.func();
Console.ReadKey();
}
}
当以上代码被编译和执行时,会产生如下结果:
Inside first_space
Inside second_space
嵌套命名空间
您可以定义一个命名空间嵌套在另一个命名空间内,如下所示:
namespace namespace_name1 {
namespace namespace_name2 {
}
}
您可以通过使用点 (.) 操作符来访问嵌套命名空间的成员,如下所示:
using System;
using first_space;
using first_space.second_space;
namespace first_space {
class abc {
public void func() {
Console.WriteLine("Inside first_space");
}
}
namespace second_space {
class efg {
public void func() {
Console.WriteLine("Inside second_space");
}
}
}
}
class TestClass {
static void Main(string[] args) {
abc fc = new abc();
efg sc = new efg();
fc.func();
sc.func();
Console.ReadKey();
}
}
当以上代码被编译和执行时,会产生如下结果:
Inside first_space
Inside second_space