📜  C#-命名空间

📅  最后修改于: 2020-12-28 05:09:57             🧑  作者: Mango


命名空间旨在提供一种使一组名称彼此分开的方法。在一个名称空间中声明的类名与在另一个名称空间中声明的相同类名不冲突。

定义命名空间

命名空间定义以关键字命名空间开头,后跟命名空间名称,如下所示:

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关键字指出程序正在使用给定名称空间中的名称。例如,我们在程序中使用System名称空间。在那里定义了控制台类。我们只写-

Console.WriteLine ("Hello there");

我们可以将全限定名称写为-

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

您还可以避免使用using 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