位置:首页 > 高级语言 > C#在线教程 > C#命名空间

C#命名空间

命名空间是专为提供一种方法来保持一组名字从另一个分开。在一个命名空间中声明的类名称将不能与其他声明的类名称冲突。

定义命名空间

命名空间的定义使用namespace关键字后面的命名空间名称如下示例:

namespace namespace_name
{
   // code declarations
}

调用任何函数或变量的命名空间启用版本,前面加上命名空间名称如下:

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 关键字

在using关键字指出该程序正在使用给定的命名空间中的名称。例如,我们正在使用程序System命名空间。类Console被定义在那里。我们只是写:

Console.WriteLine ("Hello there");

我们可以这样写完全限定名称为:

System.Console.WriteLine("Hello there");

也可避免命名空间使用使用namespace指令的前缀。这个指令告诉后续代码利用名指定的命名空间中的编译器。因此,命名空间隐含了下面的代码:

让我们改前面的例子,使用指令:

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 
{
   // code declarations
   namespace namespace_name2 
   {
     // code declarations
   }
}

可以使用点(.)操作如下访问嵌套的命名空间的成员:

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