C# 命名空间

  • 命名空间

    命名空间是专为提供一种方法来保持一组的名称从彼此分离。在一个名称空间中声明的类名与在另一个名称空间中声明的相同类名不冲突。
  • 定义命名空间

    命名空间定义以关键字命名空间开头,后跟命名空间名称,如下所示:
    
    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 关键字状态,该程序使用在给定的命名空间的名称。例如,我们在程序中using System名称空间。在那里定义了Console 类。我们只写-
    
    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