C# - 命名空间

namespace(命名空间)旨在提供一种方法来区分不同的名称。在一个命名空间中声明的类名不会与在另一个命名空间中声明的相同类名冲突。

定义命名空间

命名空间的定义以关键字 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 关键字

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